ใช่ฉันรู้ว่ามีคำถามมากมายเกี่ยวกับหัวข้อนี้ แต่ฉันยังไม่พบวิธีแก้ปัญหาของฉัน ฉันมีคุณสมบัติที่ใส่คำอธิบายประกอบวัตถุ 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()
หมายถึงการซิงโครไนซ์ แย่มากถ้าคุณกำลังมองหาประสิทธิภาพ