Ich schreibe eine Methode, die ein paar Elemente unter dem gleichen Wurzelelement in einer Schleife hinzufügt, aber wenn ich die XML-Datei öffne, sieht es so aus, als wäre das erste Element korrekt hinzugefügt und die anderen hinzugefügt unter Hauptelement.XML-Generierung, Element wird nicht korrekt hinzugefügt
Dies ist meine Methode 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);
Das ist mein XML-Ausgabe:
<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>
Dies ist, was ich erreichen will:
<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>
ich meine Methode zu tun in eine Schleife:
for(int i = 0; i < 5; i++) {
addStepElement();
}
Was mache ich falsch?
Einrückung ändert nicht die Bedeutung Ihres XML. Alle "Step" -Elemente im ersten XML sind Kinder von 'testDetails', genau wie diese' Step' -Elemente im 2. XML. Kein Unterschied in der XML-Sicht .. – har07
vielen Dank !! :) –
Gern geschehen! Posted eine Antwort unten, so kann diese Frage angemessen geschlossen werden. Vielen Dank – har07