XML in ein Zip Archiv packen

Status
Nicht offen für weitere Antworten.

mr.warft

Mitglied
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

Top Contributor
Beispiel:

Code:
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

Mitglied
Code:
	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

Top Contributor
Code:
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

Mitglied
: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 :cool:

Mr. Warft
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
S objekte in xml datei packen (JAXB) XML & JSON 5

Ähnliche Java Themen

Neue Themen


Oben