Stack Overflow на русском Asked by Ilya Weber on December 30, 2021
Буду благодарен за подсказки в объяснении правильной работы с классами Document, Element и Node, а так же методами Document.importNode() и Node.appendChild().
Есть задача объединить 2 xml (выполнить merge), существующие инструменты не очень подходят.
Файл: xml1.xml
<root>
<A>
<element1>value_A</element1>
</A>
</root>
Файл: xml2..xml
<root>
<B>
<element2>value_B2</element2>
<element3>value_B3</element3>
</B>
</root>
Ожидаемый результат:
<root>
<A>
<element1>value_A</element1>
</A>
<B>
<element2>value_B2</element2>
<element3>value_B3</element3>
</B>
</root>
Пытаюсь сделать задачу, опираясь на вышеуказанные классы.
@Before
public void setUp() {
xmlFileStream1 = TestXml.class.getClassLoader().getResourceAsStream("xml1.xml");
xmlFileStream2 = TestXml.class.getClassLoader().getResourceAsStream("xml2.xml");
}
@Test
public void testXmlUnion() throws Exception {
DocumentBuilderFactory docBuilderFactory = DocumentBuilderFactory.newInstance();
DocumentBuilder docBuilder = docBuilderFactory.newDocumentBuilder();
Document baseDoc = docBuilder.parse(xmlFileStream1);
Element baseRoot = baseDoc.getDocumentElement();
Document secondaryDoc = docBuilder.parse(xmlFileStream2);
Element secondaryRoot = secondaryDoc.getDocumentElement();
Node noteToAppend = secondaryRoot.getChildNodes().item(0);
Node importedNodeToAppend = baseDoc.importNode(noteToAppend, true);
baseRoot.appendChild(importedNodeToAppend);
}
В итоге эта Node (которая noteToAppend) не добавляется ни к Объекту baseRoot, ни к baseDoc
Get help from others!
Recent Answers
Recent Questions
© 2024 TransWikia.com. All rights reserved. Sites we Love: PCI Database, UKBizDB, Menu Kuliner, Sharing RPP