# JAXB - Marshaller - kein Rückgabewert



## g.rottig (5. Sep 2009)

Hallo Community,

seit Stunden tüftle ich schon an folgendem Problem:

Über - von JAXB Binding generierten - Java-Klassen erstelle ich ein XML File.
Funktioniert auch wunderbar, allerdings brauche ich das XML File VOR dem erstellen, wenn möglich als String, da ich diesen noch verschlüsseln muss.
An der Stelle, an dem die Umwandlung von Java Objekten zu einer strukturierten XML passiert, gibt es um's Verrecken keinen Rückgabewert zu holen:


```
JAXBContext context = JAXBContext.newInstance(ObjectFactory.class);
Marshaller marshaller = context.createMarshaller();
marshaller.marshal(pXmlFile, System.out);
```

Nachdem die dritte Zeile ausgeführt wurde, sehe ich ja den String in der Konsole in Form der zu erstellenden XML Datei. Also probierte ich auch schon den String aus der Konsole selbst zu beziehen, woran ich allerdings auch scheiterte, da bei dem Aufruf von "console.readLine()" einfach nichts mehr weiterging. Keine Fehlermeldung, kein Ergebnis, nichtmal ein Fortlaufen im Code.


```
BufferedReader console = new BufferedReader(new InputStreamReader(System.in));

marshaller.marshal(pXmlFile, System.out);

String zeile = null;
try {
	zeile = console.readLine();
} catch (IOException e) {

	e.printStackTrace();
}
```

Habt ihr eine Idee, wie ich bewerkstelligen kann, das XML File vor dem Erstellen als String abzufangen?
Müsste wohl direkt nach der Zeile hier passieren:


```
marshaller.marshal(pXmlFile, System.out);
```

Vielen vielen Dank schonmal!


----------



## musiKk (5. Sep 2009)

Du musst ja nicht System.out nehmen, sondern kannst einen anderen [c]OutputStream[/c] verwenden. Oder ein [c]File[/c] oder einen [c]Writer[/c]. Einfach mal in der Doku schauen.


----------



## g.rottig (7. Sep 2009)

Ah alles klar, vielen Dank!
Hab's nun so gelöst:

```
StringWriter sw = new StringWriter();
marshaller.marshal(pXmlFile, sw);
String s = sw.toString();
```

Nahaliegend, simpel, aber den kleinen Schlag auf den Hinterkopf hab ich jetzt irgendwie gebraucht. ;-)
Danke nochmal.

[ERLEDIGT]


----------

