teststep の言語ローカリゼーションを取得する際に問題が発生しています。ここで XML ドキュメントを作成しましたが、<EN>Common Test</EN> <DE>Allgemeiner Test</DE>
要素の値だけを返すか、DE or EN
. NodeList
out がTESTSTEP
あり、子ノードを取得する場合、要素から言語要素も取得しますが、要素から言語TEST
要素を 1 つだけ取得しTESTSTEP
ます。を使用してこれを達成するにはどうすればよいDOM
ですか?
<?xml version="1.0" encoding="ISO-8859-1" standalone="no"?>
<DSCT2C>
<TESTSTEPS APPLICATION="UGS">
<TESTSTEP ORDER_NUMBER="0">
<EN>Common Test</EN>
<DE>Allgemeiner Test</DE>
<TEST ORDER_NUMBER="0" NEED_FUNCTION="true" FUNCTION_NAME="functionName">
<DESCRIPTION>
<DE>Hallo</DE>
<EN>Hello</EN>
</DESCRIPTION>
<FILES>
<FILE>test.prt</FILE>
<FILE>test.drw</FILE>
</FILES>
</TEST>
<TEST ORDER_NUMBER="1" NEED_FUNCTION="false">
<DESCRIPTION>
<DE>Hallo2</DE>
<EN>Hello2</EN>
</DESCRIPTION>
<FILES>
</FILES>
</TEST>
</TESTSTEP>
</TESTSTEPS>
</DSCT2C>
編集:私は自分で解決策を見つけましたが、それは非常に単純でした;):
public String getTestStepDescription(String langCode, Integer orderNumber)
{
NodeList list = documentTest.getElementsByTagName(XmlElements.TESTSTEP.toString());
for (int i = 0; i < list.getLength(); i++)
{
Element e = (Element) list.item(i);
if (e.getAttribute(XmlAttributes.ORDER_NUMBER.toString()).equals(orderNumber.toString()))
{
NodeList neu = e.getElementsByTagName(langCode.toUpperCase());
for(int j = 0; j < neu.getLength(); j++)
{
Element e2 = (Element) neu.item(j);
if(e2.getParentNode().getNodeName().equals(XmlElements.TESTSTEP.toString()))
{
return neu.item(j).getFirstChild().getNodeValue();
}
}
}
}
return "ERROR_NO_TESTSTEP_DESC";
}