# Mehrere XML-Dateien zu einer zusammenfügen



## zerox92 (19. Sep 2014)

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


```
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();
		} 
	}	
}
```


----------



## Joose (19. Sep 2014)

Beide Dateien einlesen und parsen. Diese Objekte dann in einer Liste zusammenfassen und diese Liste dann wieder als XML rausschreiben.


----------



## zerox92 (19. Sep 2014)

@Joose Meinst du eine NodeList oder eine ArrayList (sorry ich bin noch Anfänger) 

Beste Grüße Sabine


----------



## Joose (19. Sep 2014)

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.


----------

