# XML in ein Zip Archiv packen



## mr.warft (15. Jun 2007)

Hallo @ all,

gleich mal zu meinem Problem.

wie oben schon genannt möchte ich xml-Dateien in ein Zip Archiv packen...leider funktioniert das nicht ganz so wie ich es gedacht habe.

Was ich bis jetzt gemacht ist, dass ich das Archiv mit den nötigen xml-Dateien erstellt habe (die xml-Dateien sind aber leer) --> und da liegt auch das Problem...wie kann ich die Informationen in die jeweilige xml schreiben.

Bis jetzt habe ich immer nur einzelne xml-Dateien erstellt aber nun sollen die in einem Archiv zusammengefasst werden. Meine Gedanke war dann, das ich den FileWriter, mit dem ich die xml ja befühle einfach einen OutputStream verwende und diesen dann an den ZipOutputSteam übergebe

also ---> zipoutputstream.write("hier der OutputStream")

aber es funktioniert nicht so wie gedacht und ich stehe leider etwas unter Zeitdruck und dazu kommt denn noch, das ich mich mit den Thema Streams noch weiter nicht auseinander gesetzt habe. :noe:

Ich hoffe das ihr mir das helfen könnt...

Danke.

Mr Warft


----------



## kleiner_held (15. Jun 2007)

Beispiel:


```
public class Test
{	
	public static void main(String[] args)
	{
		try
		{
			ZipOutputStream outputStream = new ZipOutputStream(new FileOutputStream("test.zip"));
			addEntry(outputStream, "xml/data1.xml", "<root><content>Hallo</content></root>");
			addEntry(outputStream, "xml/data2.xml", "<root2><content>Hallo2</content></root2>");
			outputStream.flush();
			outputStream.close();
		}
		catch (Exception e)
		{
			e.printStackTrace();
		}
	}
	
	public static void addEntry(ZipOutputStream outputStream, String name, String content) throws IOException
	{
		ZipEntry zipEntry = new ZipEntry(name);
		outputStream.putNextEntry(zipEntry);
		OutputStreamWriter writer = new OutputStreamWriter(outputStream);
		writer.write(content);
		writer.flush();
		outputStream.closeEntry();
		// do not close the OutputStreamWriter!
	}
}
```


----------



## mr.warft (15. Jun 2007)

```
public void saveToFileMap(String path) throws IOException{
		// Erzeuge Map-Dokument und seinen Root
		Document doc = new Document();
		doc.setDocType(new DocType ("maps","map.dtd"));
		Element rootElement = new  Element ("maps");
		doc.setRootElement(rootElement);
		
		Element mapNode = createXMLMap((Map) World.currentMap);
		rootElement.addContent(mapNode);
		
		/*
		 * Stream auf Zieldatei anfordern und Dokument formatieren
		 */
		File mapFile = new File(path);
		FileWriter filewriter = new FileWriter (mapFile);
		
		
		
		XMLOutputter xmlout = new XMLOutputter();
		Format format = Format.getPrettyFormat();
		format.setEncoding(Config.defaultCharset);
		xmlout.setFormat(format);

		// Freigeben der Ressourcen
		xmlout.output(doc, filewriter);
		filewriter.close();
	}
```

Vielleicht wird es so deutlicher...die Datei die dort erstellt wird (map.xml) soll gleich in ein Archiv gepackt werden...damit habe ich starke Schwierigkeiten mit.

Aber trotzdem vielen Dank kleiner_held!!!! (vielleicht kannst du mir ja jetzt genauso schnell Antworten.

Mr. Warft


----------



## kleiner_held (15. Jun 2007)

```
public class Test
{
	public static void main(String[] args)
	{
		try
		{
			ZipOutputStream outputStream = new ZipOutputStream(new FileOutputStream("test.zip"));

			Document doc1 = new Document();
			doc1.setDocType(new DocType ("maps","map.dtd"));
			Element rootElement1 = new  Element ("maps");
			doc1.setRootElement(rootElement1); 
			
			Document doc2 = new Document();
			doc2.setDocType(new DocType ("maps","map.dtd"));
			Element rootElement2 = new  Element ("maps");
			doc2.setRootElement(rootElement2);
			
			addEntry(outputStream, "xml/data1.xml", doc1);
			addEntry(outputStream, "xml/data2.xml", doc2);
			
			outputStream.flush();
			outputStream.close();
		}
		catch (Exception e)
		{
			e.printStackTrace();
		}
	}
	
	public static void addEntry(ZipOutputStream outputStream, String name, Document doc) throws IOException
	{
		ZipEntry zipEntry = new ZipEntry(name);
		outputStream.putNextEntry(zipEntry);
		
		XMLOutputter xmlout = new XMLOutputter();
		Format format = Format.getPrettyFormat();
		format.setEncoding("UTF-8");
		xmlout.setFormat(format);
		xmlout.output(doc, outputStream); 
		outputStream.closeEntry();
	}
}
```


----------



## mr.warft (15. Jun 2007)

:shock: 

vielen dank...ich habe das noch ein bisschen nach meinen Vorstellungen angepasst und siehe da...funktioniert super!!!

...na auf jeden vielen Dank für die super schnelle HILFE.

Du bist für mich ein kleiner Held kleiner_held   

Mr. Warft


----------

