Hallo zusammen!
ich stehe vor einen Problem, bei dem ich nicht mehr weiterkomme.
Ich habe eine xml-Datei im Format:
<Freight Data>
<TransportDocument>
.....
</TransportDocument>
<TransportDocument>
.....
</TransportDocument>
<TransportDocument>
.....
</TransportDocument>
.
.
.
</Freight Data>
Pro TransportDocument soll jetzt ein eigenes Dokument erstellt werde im Format:
<Freight Data>
<TransportDocument>
.....
</TransportDocument>
</Freight Data>
Ich habe das so gelößt, dass ich mit dem DomParser erstmal alle Transport-Dokumente auslese, und mir die resultierende NodeList erstmal merke.
Anschliessend kopiere ich dann die Ursprungs-Datei NodeList.getLenght() mal. Lösche alle ChildNodes und versuche dann jeweils ein Transport Document pro File wieder anszuhängen. Das sieht dann so aus:
private void createDocumentCopies() throws Exception{
int i;
String tempFileName;
File tempFile;
for (i = 0; i < transportDocuments.getLength(); i++) {
documentCounter++;
tempFile = copyFile(file);
DOMParser tempParser = new DOMParser();
tempParser.parse(new InputSource(new FileReader(tempFile)));
Document tempDoc = tempParser.getDocument();
removeAllChildNodes(tempDoc.getElementsByTagName(FREIGHT_DATA_TAG).item(0));
Node tempNode = transportDocuments.item(i);
tempDoc.getElementsByTagName(FREIGHT_DATA_TAG).item(0).appendChild(tempNode); //hier tritt der Fehler auf
writeXml(tempDoc);
}
}
Mein Problem ist jetzt, dass beim appendChild() folgeden Exception auftritt:
com.ibm.xml.dom.DOMExceptionImpl
java.lang.Throwable(java.lang.String)
java.lang.Exception(java.lang.String)
java.lang.RuntimeException(java.lang.String)
org.w3c.dom.DOMException(short, java.lang.String)
com.ibm.xml.dom.DOMExceptionImpl(short, java.lang.String)
org.w3c.dom.Node com.ibm.xml.dom.NodeImpl.insertBefore(org.w3c.dom.Node, org.w3c.dom.Node)
org.w3c.dom.Node com.ibm.xml.dom.NodeImpl.appendChild(org.w3c.dom.Node)
.
.
.
Hat irgendjemand eine Idee, warum das nicht funktioniert???
Vielen Dank.
Gruß
Mirko