Java JAXB - Marshaller - kein Rückgabewert

OldManOfWoods

Lt. Junior Grade
Registriert
März 2008
Beiträge
298
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:

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

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:

Code:
marshaller.marshal(pXmlFile, System.out);


Vielen vielen Dank schonmal!
 
Du könntest es ja einfach zwei mal marshallen, und zwar das erste mal in einen StringWriter:
Code:
StringWriter sw = new StringWriter();
marchaller.marshal(pXmlFile, sw);
String s = sw.toString(); // Da hast du es!
marshaller.marshal(pXmlFile, System.out);

Wobei du anstatt des zweiten marshalls natürlich dann auch direkt mit dem String arbeiten kannst..
 
Hey, perfekt.
Genau nach dem hab ich gesucht.
So simpel und naheliegend die Lösung im Prinzip auch ist, draufgekommen bin ich irgendwie nicht...
Vielen Dank!


[ERLEDIGT]
 
Zurück
Oben