Как клонировать два узла из разных файлов XML и объединить их подузлы в другом файле XML
Я пытаюсь получить два узла из двух разных файлов XML и создать новый узел в другом файле XML со всеми подузлами из обоих узлов. Узлы имеют одинаковое количество подузлов, но с разными значениями.
Я использую синтаксический анализатор DOM для чтения файлов (я не включил код, где я анализирую файлы)
Чтобы использовать узлы из разных файлов XML, я должен сначала их клонировать. Вот как я это делаю (newXML - это файл, в котором мне нужен новый узел).
Element newRoot = newXML.getDocumentElement();
Node firstClone = firstNode.cloneNode(true);
newXML.adoptNode(firstClone);
Node secondClone = secondNode.cloneNode(true);
newXML.adoptNode(secondClone);
NodeList firstCloneChilds = firstClone.getChildNodes();
NodeList secondCloneChilds = secondClone.getChildNodes();
for (int i = 0; i < backupChilds.getLength(); i++)
{
System.out.println(firstCloneChilds.item(i).getNodeName() + " " + i);
secondClone.appendChild(firstCloneChilds.item(i));//That is the line where the problem occurs.
}
newNode = secondClone.cloneNode(true);
newXML.adoptNode(newNode);
newRoot.appendChild(newNode);
DOMSource source = new DOMSource(newXML);
TransformerFactory transformerFactory = TransformerFactory.newInstance();
Transformer transformer = transformerFactory.newTransformer();
StreamResult result = new StreamResult(newPath);
transformer.transform(source, result);
Я включил System.out.println() в цикл for, чтобы посмотреть, что происходит, и это было очень интересно. Это то, что я получаю, если я прокомментировал строку с appendChild в цикле.
#text
ID_Country
#text
ID_Currency
#text
IsoCodeNumber
#text
IsoCodeLetter
#text
PostCode
#text
CountryName
#text
И это то, что я получаю, если эта строка не закомментирована.
#text
#text
#text
#text
#text
#text
#text
<ERROR 29.11.18 15:39:35> Error
java.lang.NullPointerException
at org.apache.xerces.dom.ParentNode.internalInsertBefore(Unknown Source)
at org.apache.xerces.dom.ParentNode.insertBefore(Unknown Source)
at org.apache.xerces.dom.NodeImpl.appendChild(Unknown Source)
at de.ansys.base.module.imex.xmlcompare.DomParser.main(DomParser.java:256)
Я получаю NullPointerException, потому что количество подузлов в firstClone уменьшается из-за того, что теперь есть только текстовые узлы. Кто-нибудь знает, что происходит?