JAXB สำหรับผู้เริ่มต้น: บทช่วยสอนสำหรับการประมวลผล XML ด้วย Java
เพื่อให้แอปพลิเคชันสามารถสื่อสารกันได้บ่อยครั้งที่จำเป็นในการแปลงข้อมูลเป็นรูปแบบที่เข้ากันได้สูง เพื่อจุดประสงค์นี้ไลบรารี JAXB มีอยู่ภายใต้ Java ซึ่งประมวลผลวัตถุเป็นไฟล์ XML
สร้างไฟล์ XML ด้วย JAXB - แนวทางปฏิบัติที่ดีที่สุด
JAXB ย่อมาจาก สถาปัตยกรรม Java สำหรับการผูก XML มันช่วยให้วัตถุ Java ที่จะถูกแปลงเป็นไฟล์ XML และในทางกลับกัน ก่อนที่คุณจะเริ่มมีจุดที่ควรทราบ:
- JAXB เป็นส่วนสำคัญของชุด JRE ตั้งแต่ รุ่น 1.6 นอกจากนี้สภาพแวดล้อมการพัฒนา Java ควรมีความทันสมัยเพราะมันแก้ไขข้อบกพร่อง
- หลีกเลี่ยงชนิดข้อมูลดั้งเดิมเช่นจำนวน ทศนิยมทศนิยม หรือ จำนวนเต็มลบ รวมถึง ชนิดข้อมูลที่ ไม่ระบุตัวตน JAXB นี้ไม่มีอะไรเทียบเท่า มิฉะนั้นสามารถแปลงวัตถุชนิดข้อมูลตัวเลขรายการและชุดได้ JAXB ยังไม่สามารถจัดการชนิดข้อมูลที่ซับซ้อนเช่น java.time.LocalDate ต้องใช้ อะแดปเตอร์ที่ สร้างขึ้นเป็นพิเศษ
- ในศัพท์แสงทางเทคนิคทิศทางจาก Java ไปยัง XML เรียกว่า marshaling ในขณะที่ unmarshaling หมาย ถึงทิศทางตรงกันข้าม
คำอธิบายประกอบ XML
วิดีโอล่าสุด
JAXB สำหรับผู้เริ่มต้น: บทช่วยสอนโดยใช้ตัวอย่างของการรวบรวมซีดี
AudioCD.java: กำหนดแอตทริบิวต์ของซีดีเพลงที่นี่
MusicDB.java: คอลเล็กชันเพลงประกอบด้วยรายการซีดีเพลง
บทช่วยสอนของเราเกี่ยวกับคอลเลกชันซีดีที่แสดงผลเป็น XML ประกอบด้วยซีดีเพลงหลายแผ่น ศิลปินปีที่ออกชื่ออัลบั้มและเพลงต่าง ๆ จะถูกบันทึกลงในซีดีเพลงแต่ละแผ่น
- ก่อนอื่นควรสร้างคลาสซึ่งมีข้อมูลของซีดีเพลง ซึ่งรวมถึงศิลปินปีที่ออกอัลบั้มและเพลงที่อยู่ในแผ่นซีดี
- เพื่อให้สามารถควบคุมเอาต์พุตในรูปแบบ XML ได้ดีขึ้นจำเป็นต้องมีคำอธิบายประกอบ XML ที่ขึ้นต้นด้วย @ ภายใต้ Java
- องค์ประกอบหลักในไฟล์ XML สามารถระบุได้โดยใช้คำอธิบายประกอบต่อไปนี้: @XmlRootElement (name = "Audiocd")
- คุณสามารถแทรกคำอธิบายประกอบเหนือเมธอด getter หรือ setter ที่ระบุชื่อสำรองสำหรับคุณลักษณะ Java ตัวอย่างเช่นแทนที่จะเป็นปีของแอททริบิวปีที่พิมพ์ควรเป็นเอาท์พุท: @XmlElement (ชื่อ = "ปีที่เผยแพร่")
- ลำดับของแอ็ตทริบิวต์ถูกกำหนดโดยหมายเหตุประกอบ @XmlType (propOrder = {"ศิลปิน", "ชื่อ", "ปี", "รายการเพลง"}) ซึ่งหมายความว่าชื่อศิลปินจะปรากฏเป็นอันดับแรกในไฟล์ XML ตามด้วยชื่ออัลบั้มอัลบั้มปีที่วางจำหน่ายและรายชื่อเพลง มิฉะนั้นลำดับจะขึ้นอยู่กับไฟล์ Java
- จากนั้นสร้างคลาส Java ใหม่ที่ชื่อว่า MusicDB ซึ่งมีรายการซีดีเพลง ชื่อของคอลเล็กชันเพลงและตำแหน่งของคอลเล็กชันเพลงจะถูกบันทึกที่นี่ด้วย โดยหลักการแล้วโพรซีเดอร์จะคล้ายกับในไฟล์ Java ที่กล่าวถึงข้างต้น
จากวัตถุ Java ไปยังไฟล์ XML
วิดีโอล่าสุด
AudioCDMain.java: สร้างซีดีเพลงหลายแผ่นที่นี่
AudioCDMain.java: สร้างคอลเลกชันเพลง
AudioCDMain.java: แปลงรหัสเป็น XML
การแปลงตัวเองเกิดขึ้นในโปรแกรมทดสอบอย่างแม่นยำมากขึ้นในวิธีการหลัก
- ขั้นแรกให้สร้างอินสแตนซ์ Audio CD หลายอันเพื่อสร้าง Audio CD หลายอัน
- ตัวอย่างของคอลเลกชันเพลงประเภท MusicDB ก็จำเป็นเช่นกัน
- นอกจากนี้ JAXB จำเป็นต้องรู้คลาส Java ที่มีองค์ประกอบรูต ในกรณีของเรานี่คือคลาส MusicDB : JAXBContext context = JAXBContext.newInstance (MusicDB.class)
- การแปลงเกิดขึ้นโดยใช้อินสแตนซ์ Marshaller ซึ่งเชื่อมโยงกับวิธี JAXB ที่กล่าวถึงข้างต้น: Marshaller m = context.createMarshaller ();
- เมธอด Marshaller จัด เตรียมตัว เลือกเพิ่มเติมเช่นเอกสาร XML ถูกจัดรูปแบบผลลัพธ์: .setProperty (Marshaller.JAXB_FORMATTED_OUTPUT, Boolean.TRUE);
ทุกสิ่งในทิศทางตรงกันข้าม
วิดีโอล่าสุด
AudioCDMain.java: JAXB สร้างวัตถุ Java จากไฟล์ XML
JAXB ได้รับการจัดรูปแบบไฟล์ XML แล้ว
โดยทั่วไปการแปลงในทิศทางอื่นดำเนินไปในทำนองเดียวกัน:
- ก่อนอื่นอินสแตนซ์ของเมธอด unmarshaller จะถูกสร้างขึ้น: unmarshaller ที่ = context.createUnmarshaller ();
- ดังนั้นอินสแตนซ์ unmarshaler ต้องการชื่อของไฟล์ XML ที่สร้างขึ้นก่อนหน้านี้: MusicDB mdb2 = (MusicDB) um.unmarshal (ใหม่ FileReader (MUSICDB_XML));