J
Jakki
Gast
Hi,
ich verwende derzeit Klassen aus javax.xml.* und org.w3c.dom.* um mir ein XML-file aus Daten zu erzeugen. Momentan ist es so, dass erst das gesamte XML im RAM erzeugt wird und dann, wenn alles fertig ist, dass ganze geschrieben wird.
Funktioniert, nur hab ich hier Situationen wo in das XML File mehr Daten hinein müssen als ich Arbeitsspeicher habe....
Ist es irgendwie möglich einen XML-Stream zu erzeugen, damit nicht immer erst alles im Speicher aufgebaut werden muss?
Momentan schreib ich mein XML-Dokument so:
ich verwende derzeit Klassen aus javax.xml.* und org.w3c.dom.* um mir ein XML-file aus Daten zu erzeugen. Momentan ist es so, dass erst das gesamte XML im RAM erzeugt wird und dann, wenn alles fertig ist, dass ganze geschrieben wird.
Funktioniert, nur hab ich hier Situationen wo in das XML File mehr Daten hinein müssen als ich Arbeitsspeicher habe....
Ist es irgendwie möglich einen XML-Stream zu erzeugen, damit nicht immer erst alles im Speicher aufgebaut werden muss?
Momentan schreib ich mein XML-Dokument so:
Java:
TransformerFactory transformerFactory = TransformerFactory.newInstance();
transformerFactory.setAttribute("indent-number", "2");
Transformer transformer = transformerFactory.newTransformer();
transformer.setOutputProperty(OutputKeys.INDENT, "yes");
DOMSource source = new DOMSource(doc);
StringWriter writer = new StringWriter();
StreamResult result = new StreamResult(writer);
transformer.transform(source, result);
OutputStreamWriter streamWriter = new OutputStreamWriter(new FileOutputStream(path, false), encoding);
streamWriter.write(writer.toString());
streamWriter.close();