Java 减少XML文档上重复的循环代码
我有以下代码部分: 第一种方法:Java 减少XML文档上重复的循环代码,java,code-duplication,Java,Code Duplication,我有以下代码部分: 第一种方法: public ArrayList<String> getTestFilesForOrderNumber(Integer testStepOrderNumber, Integer testOrderNumber, String version) { NodeList list = documentTest.getElementsByTagName(XmlElements.TESTSTEPS); ArrayList<
public ArrayList<String> getTestFilesForOrderNumber(Integer testStepOrderNumber, Integer testOrderNumber,
String version)
{
NodeList list = documentTest.getElementsByTagName(XmlElements.TESTSTEPS);
ArrayList<String> files = new ArrayList<>();
for (int i = 0; i < list.getLength(); i++)
{
Element e = (Element) list.item(i);
if (e.getAttribute(XmlAttributes.VERSION).equalsIgnoreCase(version))
{
list = e.getElementsByTagName(XmlElements.TESTSTEP);
for (int l = 0; l < list.getLength(); l++)
{
e = (Element) list.item(l);
if (e.getAttribute(XmlAttributes.ORDER_NUMBER).equals(testStepOrderNumber.toString()))
{
NodeList testsList = e.getElementsByTagName(XmlElements.TEST);
for (int j = 0; j < testsList.getLength(); j++)
{
Element e2 = (Element) testsList.item(j);
if (e2.getAttribute(XmlAttributes.ORDER_NUMBER).equals(testOrderNumber.toString()))
{
NodeList fileList = e2.getElementsByTagName(XmlElements.FILE);
for (int k = 0; k < fileList.getLength(); k++)
{
Element e3 = (Element) fileList.item(k);
if (e3.getParentNode().getNodeName().equals(XmlElements.FILES))
{
files.add(e3.getFirstChild().getNodeValue());
}
}
}
}
}
}
}
}
return files;
}
public ArrayList getTestFilesForOrderNumber(整数testStepOrderNumber、整数testOrderNumber、,
字符串版本)
{
NodeList=documentTest.getElementsByTagName(XmlElements.TESTSTEPS);
ArrayList files=新的ArrayList();
对于(int i=0;i
第二种方法:
public String getTestDescription(String langCode, Integer testStepOrderNumber, Integer testOrderNumber, String version)
{
NodeList list = documentTest.getElementsByTagName(XmlElements.TESTSTEPS);
for (int i = 0; i < list.getLength(); i++)
{
Element e = (Element) list.item(i);
if (e.getAttribute(XmlAttributes.VERSION).equalsIgnoreCase(version))
{
list = e.getElementsByTagName(XmlElements.TESTSTEP);
for (int l = 0; l < list.getLength(); l++)
{
e = (Element) list.item(l);
if (e.getAttribute(XmlAttributes.ORDER_NUMBER).equals(testStepOrderNumber.toString()))
{
NodeList testsList = e.getElementsByTagName(XmlElements.TEST);
for (int j = 0; j < testsList.getLength(); j++)
{
Element e2 = (Element) testsList.item(j);
if (e2.getAttribute(XmlAttributes.ORDER_NUMBER).equals(testOrderNumber.toString()))
{
NodeList testList = e2.getElementsByTagName(langCode.toUpperCase());
for (int k = 0; k < testList.getLength(); k++)
{
Element e3 = (Element) testList.item(k);
if (e3.getParentNode().getNodeName().equals(XmlElements.DESCRIPTION))
{
return testList.item(k).getFirstChild().getNodeValue();
}
}
}
}
}
}
}
}
return "ERROR_NO_TEST_DESC";
}
public String getTestDescription(字符串语言代码、整数testStepOrderNumber、整数testOrderNumber、字符串版本)
{
NodeList=documentTest.getElementsByTagName(XmlElements.TESTSTEPS);
对于(int i=0;i
现在,如您所见,第一个for循环完全相同,但方法返回值和方法参数却不同。现在我不知道如何减少重复的代码
提前感谢您。看来使用XPath可能会有所帮助。请看一看和一些