1) DOM (ตัวแยกวิเคราะห์ JAXP Crimson)
DOM เป็นมาตรฐาน W3C อย่างเป็นทางการสำหรับการแสดงเอกสาร XML ในรูปแบบที่ไม่ขึ้นกับแพลตฟอร์มและภาษา DOM คือชุดของโหนดหรือชิ้นส่วนข้อมูลที่จัดอยู่ในโครงสร้างแบบลำดับชั้น ลำดับชั้นนี้ช่วยให้นักพัฒนาสามารถค้นหาข้อมูลเฉพาะในแผนผังได้ โดยทั่วไปการวิเคราะห์โครงสร้างนี้จำเป็นต้องโหลดเอกสารทั้งหมดและสร้างลำดับชั้นก่อนจึงจะสามารถทำงานใดๆ ได้ เนื่องจากขึ้นอยู่กับลำดับชั้นของข้อมูล DOM จึงถือเป็นแบบต้นไม้หรือแบบวัตถุ DOM และการประมวลผลแบบต้นไม้โดยทั่วไปมีข้อดีหลายประการ ประการแรก เนื่องจากแผนผังยังคงอยู่ในหน่วยความจำ จึงสามารถแก้ไขได้เพื่อให้แอปพลิเคชันสามารถทำการเปลี่ยนแปลงข้อมูลและโครงสร้างได้ นอกจากนี้ยังช่วยให้สามารถนำทางขึ้นและลงต้นไม้ได้ตลอดเวลา แทนที่จะเป็นกระบวนการแบบครั้งเดียวเช่น SAX DOM ยังใช้งานง่ายกว่ามาก
2) แซ็กโซโฟน
ข้อดีของการประมวลผล SAX นั้นคล้ายคลึงกับข้อดีของการสตรีมสื่อมาก การวิเคราะห์สามารถเริ่มได้ทันที แทนที่จะรอให้ประมวลผลข้อมูลทั้งหมด นอกจากนี้ เนื่องจากแอปพลิเคชันเพียงตรวจสอบข้อมูลในขณะที่อ่าน จึงไม่จำเป็นต้องจัดเก็บข้อมูลไว้ในหน่วยความจำ นี่เป็นข้อได้เปรียบอย่างมากสำหรับเอกสารขนาดใหญ่ ในความเป็นจริง แอปพลิเคชันไม่จำเป็นต้องแยกวิเคราะห์เอกสารทั้งหมดด้วยซ้ำ แอปพลิเคชันสามารถหยุดการแยกวิเคราะห์ได้เมื่อตรงตามเงื่อนไขบางประการ โดยทั่วไปแล้ว SAX ยังเร็วกว่า DOM ที่มาแทนที่อีกด้วย
DOM หรือแซ็กโซโฟน? สำหรับนักพัฒนาที่ต้องการเขียนโค้ดของตนเองเพื่อประมวลผลเอกสาร XML การเลือกโมเดลการแยกวิเคราะห์ DOM หรือ SAX ถือเป็นการตัดสินใจในการออกแบบที่สำคัญมาก DOM ใช้โครงสร้างแบบต้นไม้เพื่อเข้าถึงเอกสาร XML ในขณะที่ SAX ใช้โมเดลเหตุการณ์
ตัวแยกวิเคราะห์ DOM แปลงเอกสาร XML ให้เป็นแผนภูมิที่มีเนื้อหาและสามารถสำรวจแผนภูมิได้ ข้อดีของการใช้ DOM เพื่อแยกวิเคราะห์โมเดลคือการเขียนโปรแกรมนั้นง่าย นักพัฒนาเพียงต้องเรียกคำสั่งการสร้างแผนผัง จากนั้นใช้ API การนำทางเพื่อเข้าถึงโหนดแผนผังที่จำเป็นเพื่อทำงานให้เสร็จสมบูรณ์ สามารถเพิ่มและแก้ไของค์ประกอบในแผนผังได้อย่างง่ายดาย อย่างไรก็ตาม เนื่องจากเอกสาร XML ทั้งหมดจำเป็นต้องได้รับการประมวลผลเมื่อใช้ตัวแยกวิเคราะห์ DOM ข้อกำหนดด้านประสิทธิภาพและหน่วยความจำจึงค่อนข้างสูง โดยเฉพาะอย่างยิ่งเมื่อพบไฟล์ XML ขนาดใหญ่ เนื่องจากความสามารถในการข้ามผ่าน ตัวแยกวิเคราะห์ DOM จึงมักถูกใช้ในบริการที่เอกสาร XML จำเป็นต้องเปลี่ยนแปลงบ่อยครั้ง
ตัวแยกวิเคราะห์ SAX ใช้โมเดลตามเหตุการณ์ มันสามารถทริกเกอร์ชุดของเหตุการณ์เมื่อแยกวิเคราะห์เอกสาร XML เมื่อพบแท็กที่กำหนด ก็สามารถเปิดใช้งานวิธีการโทรกลับเพื่อบอกวิธีการที่พบแท็กที่ระบุ โดยปกติแล้ว SAX จะมีความต้องการหน่วยความจำที่ต่ำกว่า เนื่องจากช่วยให้นักพัฒนาสามารถตัดสินใจว่าแท็กใดที่จะประมวลผล โดยเฉพาะอย่างยิ่งเมื่อนักพัฒนาต้องการประมวลผลข้อมูลบางส่วนที่มีอยู่ในเอกสารเท่านั้น ความสามารถในการปรับขนาดของ SAX จะสะท้อนให้เห็นได้ดีกว่า แต่การเข้ารหัสจะยากกว่าเมื่อใช้ตัวแยกวิเคราะห์ SAX และเป็นการยากที่จะเข้าถึงข้อมูลที่แตกต่างกันหลายรายการในเอกสารเดียวกันในเวลาเดียวกัน
3) JDOM http://www.jdom.org
วัตถุประสงค์ของ JDOM คือการเป็นโมเดลเอกสารเฉพาะของ Java ที่ทำให้การโต้ตอบกับ XML ง่ายขึ้น และเร็วกว่าการใช้งานโดยใช้ DOM JDOM ได้รับการส่งเสริมและส่งเสริมอย่างมากเนื่องจากเป็นโมเดลเฉพาะ Java แรก กำลังได้รับการพิจารณาให้ใช้งานในที่สุดในฐานะ "ส่วนขยายมาตรฐาน Java" ผ่านทาง "คำขอข้อมูลจำเพาะ Java JSR-102" การพัฒนา JDOM เริ่มต้นตั้งแต่ต้นปี 2000
มีความแตกต่างหลักสองประการระหว่าง JDOM และ DOM อันดับแรก JDOM ใช้เฉพาะคลาสที่เป็นรูปธรรมเท่านั้น ไม่ใช่อินเทอร์เฟซ วิธีนี้ทำให้ API ง่ายขึ้นในบางวิธี แต่ยังจำกัดความยืดหยุ่นด้วย ประการที่สอง API ใช้คลาส Collections อย่างกว้างขวาง ทำให้การใช้งานง่ายขึ้นสำหรับนักพัฒนา Java ที่คุ้นเคยกับคลาสเหล่านี้อยู่แล้ว
เอกสาร JDOM ระบุว่าจุดประสงค์คือ "แก้ปัญหา Java/XML 80% (หรือมากกว่า) โดยใช้ความพยายาม 20% (หรือน้อยกว่า)" (สมมติว่า 20% ตามช่วงการเรียนรู้) JDOM มีประโยชน์อย่างแน่นอนสำหรับแอปพลิเคชัน Java/XML ส่วนใหญ่ และนักพัฒนาส่วนใหญ่พบว่า API เข้าใจได้ง่ายกว่า DOM มาก JDOM ยังมีการตรวจสอบพฤติกรรมของโปรแกรมอย่างครอบคลุม เพื่อป้องกันไม่ให้ผู้ใช้ทำอะไรก็ตามที่ไม่สมเหตุสมผลใน XML อย่างไรก็ตาม ยังคงต้องการให้คุณเข้าใจ XML ดีพอที่จะทำมากกว่าพื้นฐาน (หรือแม้กระทั่งเข้าใจข้อผิดพลาดในบางกรณี) นี่อาจเป็นงานที่มีความหมายมากกว่าการเรียนรู้อินเทอร์เฟซ DOM หรือ JDOM
JDOM เองไม่มี parser โดยทั่วไปจะใช้ตัวแยกวิเคราะห์ SAX2 เพื่อแยกวิเคราะห์และตรวจสอบความถูกต้องของเอกสาร XML อินพุต (แม้ว่าจะสามารถใช้การแสดง DOM ที่สร้างไว้ก่อนหน้านี้เป็นอินพุตได้ด้วย) มันมีตัวแปลงเพื่อส่งออกการเป็นตัวแทน JDOM ไปยังสตรีมเหตุการณ์ SAX2, โมเดล DOM หรือเอกสารข้อความ XML JDOM เป็นโอเพ่นซอร์สที่เผยแพร่ภายใต้ใบอนุญาต Apache รุ่นอื่น
4) DOM4J http://dom4j.sourceforge.net
แม้ว่า DOM4J จะแสดงถึงการพัฒนาที่เป็นอิสระอย่างสมบูรณ์ แต่เดิมมันเป็นทางแยกอันชาญฉลาดของ JDOM ประกอบด้วยคุณสมบัติมากมายนอกเหนือจากการแสดงเอกสาร XML พื้นฐาน รวมถึงการสนับสนุน XPath แบบรวม การสนับสนุน XML Schema และการประมวลผลตามเหตุการณ์สำหรับเอกสารขนาดใหญ่หรือเอกสารสตรีมมิ่ง นอกจากนี้ยังมีตัวเลือกในการสร้างการแสดงเอกสารด้วยความสามารถในการเข้าถึงแบบขนานผ่าน DOM4J API และอินเทอร์เฟซ DOM มาตรฐาน ได้รับการพัฒนาตั้งแต่ช่วงครึ่งหลังของปี 2543
เพื่อรองรับคุณสมบัติเหล่านี้ทั้งหมด DOM4J ใช้อินเทอร์เฟซและวิธีการคลาสพื้นฐานแบบนามธรรม DOM4J ใช้คลาส Collections ใน API อย่างหนัก แต่ในหลายกรณี ยังมีทางเลือกอื่นที่ช่วยให้มีประสิทธิภาพดีขึ้นหรือมีวิธีการเขียนโค้ดที่ตรงกว่าอีกด้วย ประโยชน์โดยตรงคือแม้ว่า DOM4J จะจ่ายราคาของ API ที่ซับซ้อนกว่า แต่ก็ให้ความยืดหยุ่นมากกว่า JDOM มาก
ในขณะที่เพิ่มความยืดหยุ่น การบูรณาการ XPath และการจัดการเอกสารขนาดใหญ่ เป้าหมายของ DOM4J ก็เหมือนกับของ JDOM นั่นคือ ความง่ายในการใช้งานและการดำเนินการตามสัญชาตญาณสำหรับนักพัฒนา Java นอกจากนี้ยังมุ่งหวังที่จะเป็นโซลูชันที่สมบูรณ์กว่า JDOM โดยบรรลุเป้าหมายในการจัดการกับปัญหา Java/XML ทั้งหมด ในขณะที่บรรลุเป้าหมายดังกล่าว ก็ให้ความสำคัญกับการป้องกันพฤติกรรมแอปพลิเคชันที่ไม่ถูกต้องน้อยกว่า JDOM
DOM4J เป็น Java XML API ที่ยอดเยี่ยมมาก พร้อมด้วยประสิทธิภาพที่ยอดเยี่ยม ฟังก์ชันอันทรงพลัง และความสะดวกในการใช้งานอย่างมาก นอกจากนี้ยังเป็นซอฟต์แวร์โอเพ่นซอร์สอีกด้วย ทุกวันนี้คุณจะเห็นได้ว่าซอฟต์แวร์ Java ใช้ DOM4J ในการอ่านและเขียน XML มากขึ้นเรื่อยๆ เป็นเรื่องที่น่าสังเกตว่าแม้แต่ JAXM ของ Sun ก็ใช้ DOM4J เช่นกัน
2...เปรียบเทียบ
1) DOM4J มีประสิทธิภาพดีที่สุด แม้แต่ JAXM ของ Sun ก็ใช้ DOM4J เช่นกัน ปัจจุบัน โครงการโอเพ่นซอร์สจำนวนมากใช้ DOM4J อย่างกว้างขวางเช่นกัน หากไม่ต้องกังวลเรื่องการพกพา ให้ใช้ DOM4J
2) JDOM และ DOM ทำงานได้ไม่ดีในระหว่างการทดสอบประสิทธิภาพ และหน่วยความจำล้นเมื่อทดสอบเอกสาร 10M นอกจากนี้ยังควรพิจารณาใช้ DOM และ JDOM ในกรณีของเอกสารขนาดเล็ก แม้ว่านักพัฒนาของ JDOM จะระบุว่าพวกเขาคาดว่าจะมุ่งเน้นไปที่ปัญหาด้านประสิทธิภาพก่อนการเปิดตัวอย่างเป็นทางการ จากมุมมองของประสิทธิภาพ แต่ก็ไม่มีอะไรจะแนะนำจริงๆ นอกจากนี้ DOM ยังเป็นตัวเลือกที่ดีมาก การใช้งาน DOM นั้นใช้กันอย่างแพร่หลายในภาษาการเขียนโปรแกรมหลายภาษา นอกจากนี้ยังเป็นพื้นฐานสำหรับมาตรฐานอื่นๆ ที่เกี่ยวข้องกับ XML และเนื่องจากได้รับการแนะนำอย่างเป็นทางการโดย W3C (ตรงข้ามกับโมเดล Java ที่ไม่ได้มาตรฐาน) จึงอาจจำเป็นต้องใช้ในโครงการบางประเภท (เช่น การใช้ DOM ในจาวาสคริปต์)
3) SAX ทำงานได้ดีขึ้น ซึ่งขึ้นอยู่กับวิธีการแยกวิเคราะห์เฉพาะ - ขับเคลื่อนด้วยเหตุการณ์ SAX ตรวจพบสตรีม XML ขาเข้า แต่ไม่ได้โหลดลงในหน่วยความจำ (แน่นอนว่าเมื่ออ่านสตรีม XML เอกสารบางส่วนจะถูกซ่อนชั่วคราวในหน่วยความจำ)
3. การใช้งานพื้นฐานของวิธีดำเนินการ xml สี่วิธี
ไฟล์ xml: