# XML Dateien zusammenführen und in eine XML speichern



## pik0r (7. Nov 2007)

Hi Leute,

wollte mal fragen ob einer ne Idee hat wie ich verschiedene xml-Dateien zusammenfassen kann?
Oder jmd sowas schon gemacht hat.

Also folgendes Problem....

Ich hab ein xml generator gebaut... der funzt... jetzt soll ich aber xml dateien übergeben und diese hinter einander
(baum für baum) anhängen...

bsp: 


```
// Datei1.xml:
<metadata>
    <blub>
        <bla> ... </bla>
    </blub>
</metadata>

// Datei2.xml:
<testing>
    <reports>True</reports>
</testing>


//am Ende soll denn folgendes raus kommen:

//Allfiles.xml:
<metadata>
    <blub>
        <bla> ... </bla>
    </blub>
</metadata>
<testing>
    <reports>True</reports>
</testing>
```

Danke für eure Hilfe


----------



## 20mithrandir (7. Nov 2007)

Naja, normalerweise würde ich sagen, du liest beide Dateien ein und schreibst sie hintereinander in eine neue Datei. Ich würde sie nicht einmal parsen (willst sie in dem schritt ja nicht weiterverarbeiten), Probleme mit Dokumenttypen scheinst du ja keine zu haben.

Also, womit genau hast du ein Problem? ; - )


----------



## Murray (7. Nov 2007)

Die Beispieldatei ist aber kein "well-formed" XML mehr, da sie mehr als ein Root-Element hat.


----------



## pik0r (8. Nov 2007)

hi das ist schön und gut... 

aber wie kann ich eine xml datei über http holen?

ich will eine xml datei auslesen...dachte es geht so:


```
public void Xml_holen() throws IOException{
		
		URL U = new URL ("http:\\\\b0121086\\maven2\\commons-codec\\commons-codec\\maven-metadata.xml");
		System.out.println(U.toString());
		URLConnection UC = U.openConnection();


		InputStream Input = UC.getInputStream();

		BufferedOutputStream BUF = new BufferedOutputStream(new FileOutputStream (new File ("d:\\...")));

		int temp = Input.read();
		while (temp !=-1){
		BUF.write (temp);
		temp = Input.read();
		}
		BUF.flush();
		BUF.close();
		
	}
```

es geht net...kann mir einer sagen wo der fehler liegt?


----------



## Murray (8. Nov 2007)

Das hat mit dem ursprünglichen Problem ja nicht mehr viel zu tun, aber egal...

Was klappt denn nicht? Compile-Fehler? Laufzeitfehler? weder noch, aber das Programm mach nicht, was du erwartest, sondern ... ?

Die Konstruktion der URL erscheint mir fragwürdig; das Protokoll wird doch normalerweise durch Slashes und nicht durch Backslashes abgetrennt, und auch in der URL sollten Slashes verwendet werden, also lieber

```
URL U = new URL ("http://b0121086/maven2/commons-codec/commons-codec/maven-metadata.xml");
```

Und ist b0121086 eine Adresse, die auf deinem System aufgelöst werden kann?


----------



## pik0r (8. Nov 2007)

Das problem ist net die adresse u. die b00 nr. sondern war der inputstream.

jetzt hab ich aber foldendes problem:

er schreibt mir die erhaltenen daten nicht in die datei=(


```
BufferedReader inStream = new BufferedReader(new InputStreamReader(UC.getInputStream()));
		String zeile;
		
		try{
			while ( (zeile = inStream.readLine()) != null) {
				System.out.println(zeile);
		} 
		
		}catch(Exception e){
			
			System.out.println(e.getMessage());
		}
		
		try{
				
			BufferedOutputStream BUF = new BufferedOutputStream(new FileOutputStream (new File ("D://test.xml")));
			System.out.println("fertsch...");
			int temp = Input.read();
			while (temp !=-1){
			BUF.write (temp);
			temp = Input.read();
			}
			BUF.flush();
			BUF.close();
```

die test.xml wird erstellt, aber ist leer? einer nen plan was falsch ist?

Danke für eure Hilfe


----------



## Murray (8. Nov 2007)

Hmm - hier wird der über die URL gelesene Stream komplett auf die Konsole ausgeben (klappt das noch?), und dann wird  aus einer anderen Quelle (die Variable Input) auch versucht, etwas zu lesen, was dann in die Datei geschrieben werden sol? Ist Input ebenfalls der InputStream der URLConnection UC? In dem Fall geht es nicht, weil der Stream ja bereits vollständig ausgelesen worden ist.


----------



## pik0r (8. Nov 2007)

da war der fehler....der pointer war schon bei null =(... ich nob



danke dir aber...... kommen aber langsam immer mehr probs...wird ne lange nacht


----------

