# XML als stream schreiben?



## Jakki (14. Aug 2012)

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:

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


----------



## SlaterB (14. Aug 2012)

was passiert denn wenn du 'streamWriter' an das StreamResult übergibst, den 'writer' auslässt?


----------



## reibi (15. Aug 2012)

Hallo

Haste Dir mal xstream angekuckt?

XStream - Two Minute Tutorial

gruß


----------

