Mehrere XML-Dateien zu einer zusammenfügen

zerox92

Mitglied
Hallo!

Ich möchte mehrere XML-Dateien zu einer zusammenfügen

Das ist der mögliche Input

//Datei1.xml
<?xml version="1.0" encoding="UTF-8" ?>
<Test>
<ReferencePoint>
//hier ist Inhalt drin
</ReferencePoint>
<ReferencePoint>
</ReferencePoint>
</Test>

//Datei2.xml
<?xml version="1.0" encoding="UTF-8" ?>
<Test>
<ReferencePoint>
//hier ist Inhalt drin
</ReferencePoint>
<ReferencePoint>
</ReferencePoint>
</Test>

Aktuell wird leider nur Datei 1 ausgegeben und Datei 2 kommt gar nicht erst dazu ...

Es sollte aber so sein

<?xml version="1.0" encoding="UTF-8" ?>
<Test>
<ReferencePoint>
//hier ist Inhalt drin
</ReferencePoint>
<ReferencePoint>
</ReferencePoint>
<ReferencePoint>
</ReferencePoint>
<ReferencePoint>
</ReferencePoint>
</Test>


Das ist mein Code

Java:
package coordinatetester;



import java.io.BufferedWriter;
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import java.io.StringWriter;
import java.io.Writer;

import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.transform.OutputKeys;
import javax.xml.transform.Transformer;
import javax.xml.transform.TransformerException;
import javax.xml.transform.TransformerFactory;
import javax.xml.transform.dom.DOMSource;
import javax.xml.transform.stream.StreamResult;

import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.Node;



public class TestTest {
	
	public static void main(String [] args) throws IOException
	{

        DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
        DocumentBuilder db = null;
        
		  Document doc = null;
		  Document doc2 = null;
		  
		try {
			  doc = db.parse(new File("C:/Users/zerox92/Desktop/workspace/CoordinateTester/xmlFiles/eins.xml"));
			  doc2 = db.parse(new File("C:/Users/zerox92/Desktop/workspace/CoordinateTester/xmlFiles/zwei.xml"));
		} catch (Exception e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} 
        
		
		mergeSecondLevel(doc, doc2);
		
	}

	public static void mergeSecondLevel(Document from, Document to) throws IOException {
	    Element fromRoot = from.getDocumentElement();
	    Element toRoot = to.getDocumentElement();

	    Node child = null;
	    while ((child = fromRoot.getFirstChild()) != null) {
	        to.adoptNode(child);
	        toRoot.appendChild(child);
	    }
	    
	    TransformerFactory tFactory = TransformerFactory.newInstance();
        Transformer transformer = tFactory.newTransformer();
        transformer.setOutputProperty(OutputKeys.INDENT, "yes"); 
	    
	    DOMSource source = new DOMSource(to);
        StreamResult result = new StreamResult(new StringWriter());
        try {
			transformer.transform(source, result);
			 Writer output = new BufferedWriter(new FileWriter("C:/Users/zerox92/Desktop/workspace/CoordinateTester/xmlFiles/lol.xml"));
		        String xmlOutput = result.getWriter().toString();  
		        output.write(xmlOutput);
		        output.close();
		        System.out.println("Ready");
		} catch (TransformerException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} 
	}	
}
 
Beide Dateien einlesen und parsen. Diese Objekte dann in einer Liste zusammenfassen und diese Liste dann wieder als XML rausschreiben.
 
Du sollst die Dateien einlesen und in Objekte umwandlen mit denen du arbeiten kannst.
Diese umgewandelten Objekte in einer (Array)List zusammenführen.

Natürlich kannst du auch probieren NodeListe zusammenzuführen, falls du keine weiteren Bearbeitungen mit den Daten vorhast.
 

Zurück
Oben