XML代,元素添加不正确

XML generation, element is being added incorrectly

我正在编写一种方法,它在循环中的同一根元素下添加了几个元素,但是当我打开 XML 文件时,看起来第一个元素已正确添加,而其他元素则添加在 main 下元素.

这是我的方法addStepElement():

DocumentBuilderFactory documentFactory = DocumentBuilderFactory.newInstance();
        DocumentBuilder documentBuilder = documentFactory.newDocumentBuilder();
        Document document = documentBuilder.parse(file);
        document.getDocumentElement().normalize();

        Element rootElement = null;     
        NodeList findRootElementList = document.getElementsByTagName("testDetails");
        for(int iterator = 0; iterator < findRootElementList.getLength(); iterator++) {
            Node node = findRootElementList.item(iterator);
            if(node.getNodeName().equals("testDetails")) {
                rootElement = (Element)node;
            }
        }


        Element step = document.createElement("Step");
        rootElement.appendChild(step);
        step.setAttribute("Step", "className");
        step.setAttribute("result", "PASS");
        step.setAttribute("screenshot", "file.jpg");
        step.setAttribute("input", "email");
        step.setAttribute("element", "submit");


        Transformer transformer = TransformerFactory.newInstance().newTransformer();
        transformer.setOutputProperty(OutputKeys.INDENT, "yes");
        transformer.setOutputProperty(OutputKeys.METHOD, "xml");
        transformer.setOutputProperty("{http://xml.apache.org/xslt}indent-amount", "5");
        DOMSource source = new DOMSource(document);
        StreamResult result = new StreamResult(new File(file.getAbsolutePath()));
        transformer.transform(source, result);

这是我的输出XML:

<Test>
     <testDetails date="19-05-2016" testName="Test" time="11:24:14">
          <Step Step="className" element="submit" input="email" result="PASS" screenshot="file.jpg"/>
     <Step Step="className" element="submit" input="email" result="PASS" screenshot="file.jpg"/>
     <Step Step="className" element="submit" input="email" result="PASS" screenshot="file.jpg"/>
     <Step Step="className" element="submit" input="email" result="PASS" screenshot="file.jpg"/>
     <Step Step="className" element="submit" input="email" result="PASS" screenshot="file.jpg"/>
     </testDetails>
</Test>

这就是我想要实现的:

<Test>
     <testDetails date="19-05-2016" testName="Test" time="11:24:14">
          <Step Step="className" element="submit" input="email" result="PASS" screenshot="file.jpg"/>
          <Step Step="className" element="submit" input="email" result="PASS" screenshot="file.jpg"/>
          <Step Step="className" element="submit" input="email" result="PASS" screenshot="file.jpg"/>
          <Step Step="className" element="submit" input="email" result="PASS" screenshot="file.jpg"/>
          <Step Step="className" element="submit" input="email" result="PASS" screenshot="file.jpg"/>
     </testDetails>
</Test>

我循环执行我的方法:

for(int i = 0; i < 5; i++) {
    addStepElement();   
}

我做错了什么?

代码没有任何问题,因为它产生了等效的 XML。

缩进使 XML 更易于人眼阅读,但它不会改变 XML 的任何含义。第一个 XML 中的所有 <Step> 元素都是 <testDetails> 的子元素,就像第二个 XML 中的那些 <Step> 元素一样。 XML 观点没有区别。