Oui, oui je sais que beaucoup de questions ont été posées sur ce sujet. Mais je ne trouve toujours pas la solution à mon problème. J'ai un objet Java annoté de propriété. Par exemple Customer, comme dans cet exemple . Et je veux une représentation String de celui-ci. Google recommande d'utiliser JAXB à ces fins. Mais dans tous les exemples, le fichier XML créé est imprimé dans un fichier ou une console, comme ceci:
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);
Mais je dois utiliser cet objet et envoyer sur le réseau au format XML. Je veux donc obtenir une chaîne qui représente XML.
String xmlString = ...
sendOverNetwork(xmlString);
Comment puis-je faire ceci?
StringWriter
est très vieux. Sous les couvertures, il utiliseStringBuffer
une approche beaucoup plus rapide,StringBuilder
mais cela n'existait pas lorsque StringWriter a été créé pour la première fois. Pour cette raison, chaque appel àsw.toString()
implique une synchronisation. Mauvais si vous recherchez la performance.