Ja, ja, ich weiß, dass zu diesem Thema viele Fragen gestellt wurden. Aber ich kann immer noch keine Lösung für mein Problem finden. Ich habe ein mit Eigenschaften versehenes Java-Objekt. Zum Beispiel Kunde, wie in diesem Beispiel . Und ich möchte eine String-Darstellung davon. Google empfiehlt, JAXB für solche Zwecke zu verwenden. In allen Beispielen wird die erstellte XML-Datei jedoch wie folgt in eine Datei oder Konsole gedruckt:
File file = new File("C:\\file.xml");
JAXBContext jaxbContext = JAXBContext.newInstance(Customer.class);
Marshaller jaxbMarshaller = jaxbContext.createMarshaller();
// output pretty printed
jaxbMarshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, true);
jaxbMarshaller.marshal(customer, file);
jaxbMarshaller.marshal(customer, System.out);
Aber ich muss dieses Objekt verwenden und über das Netzwerk im XML-Format senden. Ich möchte also einen String erhalten, der XML darstellt.
String xmlString = ...
sendOverNetwork(xmlString);
Wie kann ich das machen?
StringWriter
ist sehr alt. Unter der Decke wird verwendet,StringBuffer
wo ein viel schnellerer Ansatz gewesen wäre,StringBuilder
aber das gab es nicht, als StringWriter zum ersten Mal erstellt wurde. Aus diesem Grundsw.toString()
impliziert jeder Aufruf von eine Synchronisation. Schlecht, wenn Sie Leistung suchen.