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,StringBuilder
ancak 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ü.