Evet, evet bu konu hakkında pek çok soru sorulduğunu biliyorum. Ama yine de sorunuma çözüm bulamıyorum. Java nesnesine açıklamalı bir özelliğim var. Örneğin, bu örnekte olduğu gibi Müşteri . Ve bunun String temsilini istiyorum. Google, bu tür amaçlar için JAXB kullanılmasını önerir. Ancak, oluşturulan tüm örneklerde XML dosyası aşağıdaki gibi dosyaya veya konsola yazdırılır:
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);
Ama bu nesneyi kullanmam ve ağ üzerinden XML formatında göndermem gerekiyor. Bu yüzden XML'i temsil eden bir String elde etmek istiyorum.
String xmlString = ...
sendOverNetwork(xmlString);
Bunu nasıl yapabilirim?
StringWriterçok yaşlı. Kapakların altında,StringBufferçok daha hızlı bir yaklaşımın kullanılması gereken yerleri kullanır,StringBuilderancak bu, StringWriter ilk yapıldığında mevcut değildi. Bu nedenle her çağrısw.toString()senkronizasyon anlamına gelir. Performans arıyorsanız kötü.