Я пытаюсь получить два узла из двух разных файлов 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 уменьшено из-за того, что теперь есть только текстовые узлы.Кто-нибудь знает, что происходит?