Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/assembly/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 减少XML文档上重复的循环代码_Java_Code Duplication - Fatal编程技术网

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可能会有所帮助。请看一看和一些