0
ループ内の同じルート要素の下にいくつかの要素を追加する方法を書いていますが、XMLファイルを開くと最初の要素が正しく追加され、主な要素の下に。XML生成、要素が正しく追加されていません
これは私の方法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のすべての 'Step'要素は、2番目のXMLの' Step'要素と同様に、 'testDetails'の子です。 XMLの視点に違いはありません.. – har07
ありがとう! :) –
あなたは大歓迎です!この質問を適切に閉じられるように、以下の回答を投稿してください。ありがとう – har07