ใช่ฉันรู้ว่ามีคำถามมากมายเกี่ยวกับหัวข้อนี้ แต่ฉันยังไม่พบวิธีแก้ปัญหาของฉัน ฉันมีคุณสมบัติที่ใส่คำอธิบายประกอบวัตถุ Java ตัวอย่างเช่นลูกค้าเช่นในตัวอย่างนี้ และฉันต้องการการแสดงสตริงของมัน Google ขอแนะนำให้ใช้ JAXB เพื่อวัตถุประสงค์ดังกล่าว แต่ในตัวอย่างทั้งหมดไฟล์ XML ที่สร้างขึ้นจะถูกพิมพ์ไปยังไฟล์หรือคอนโซลเช่นนี้:
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);
แต่ฉันต้องใช้วัตถุนี้และส่งผ่านเครือข่ายในรูปแบบ XML ดังนั้นฉันต้องการรับ String ที่แสดงถึง XML
String xmlString = ...
sendOverNetwork(xmlString);
ฉันจะทำเช่นนี้ได้อย่างไร?
StringWriterเก่ามาก ภายใต้ฝาครอบจะใช้วิธีStringBufferที่เร็วกว่ามากที่จะใช้StringBuilderแต่ไม่มีอยู่เมื่อ StringWriter ถูกสร้างขึ้นครั้งแรก ด้วยเหตุนี้การเรียกทุกครั้งจึงsw.toString()หมายถึงการซิงโครไนซ์ แย่มากถ้าคุณกำลังมองหาประสิทธิภาพ