อย่างที่เราทุกคนรู้ว่ามีวิธีการที่มากขึ้นในการแยกวิเคราะห์ XML ในขณะนี้ แต่มีเพียงสี่วิธีกระแสหลักคือ: DOM, SAX, JDOM และ DOM4J
ต่อไปนี้เป็นคนแรกที่ให้ที่อยู่ดาวน์โหลดแพ็คเกจ JAR สำหรับทั้งสี่วิธีนี้
DOM: มันมาใน Java JDK ปัจจุบันในแพ็คเกจ XML-APIS.JAR
SAX: http://sourceforge.net/projects/sax/
jdom: http://jdom.org/downloads/index.html
dom4j: http://sourceforge.net/projects/dom4j/
1. บทนำและการวิเคราะห์ข้อดีและข้อเสีย
1. DOM (โมเดลวัตถุเอกสาร)
DOM เป็นมาตรฐาน W3C อย่างเป็นทางการสำหรับการเป็นตัวแทนเอกสาร XML ในลักษณะที่เป็นอิสระจากแพลตฟอร์มและภาษา DOM เป็นชุดของโหนดหรือชิ้นส่วนข้อมูลที่จัดขึ้นในลำดับชั้น ลำดับชั้นนี้ช่วยให้นักพัฒนาค้นหาข้อมูลเฉพาะในต้นไม้ การวิเคราะห์โครงสร้างนี้มักจะต้องมีการโหลดเอกสารทั้งหมดและสร้างลำดับชั้นก่อนที่จะสามารถทำงานได้ เนื่องจากมันขึ้นอยู่กับระดับข้อมูล DOM จึงถูกพิจารณาว่าเป็นแบบต้นไม้หรือวัตถุ
【ข้อได้เปรียบ】
①อนุญาตให้แอปพลิเคชันเปลี่ยนแปลงข้อมูลและโครงสร้าง
②การเข้าถึงเป็นแบบสองทิศทางและคุณสามารถนำทางขึ้นและลงต้นไม้ได้ตลอดเวลารับและใช้งานส่วนใดส่วนหนึ่งของข้อมูล
【ข้อบกพร่อง】
①โดยปกติแล้วเอกสาร XML ทั้งหมดจะต้องมีการโหลดเพื่อสร้างลำดับชั้นซึ่งใช้ทรัพยากรจำนวนมาก
2. SAX (API ง่าย ๆ สำหรับ XML)
ข้อดีของการประมวลผล SAX นั้นคล้ายคลึงกับข้อดีของการสตรีม การวิเคราะห์สามารถเริ่มต้นได้ทันทีแทนที่จะรอข้อมูลทั้งหมดที่จะประมวลผล และเนื่องจากแอปพลิเคชันตรวจสอบข้อมูลเมื่ออ่านมันจึงไม่จำเป็นต้องจัดเก็บข้อมูลในหน่วยความจำ นี่เป็นข้อได้เปรียบอย่างมากสำหรับเอกสารขนาดใหญ่ ในความเป็นจริงแอปพลิเคชันไม่จำเป็นต้องแยกวิเคราะห์เอกสารทั้งหมด มันสามารถหยุดการแยกวิเคราะห์เมื่อพบเงื่อนไขบางอย่าง โดยทั่วไปแล้วแซ็กโซโฟนเร็วกว่า DOM ทดแทนมาก
เลือก DOM หรือ SAX? สำหรับนักพัฒนาที่ต้องการเขียนรหัสของตัวเองเพื่อประมวลผลเอกสาร XML การเลือกรูปแบบการแยกวิเคราะห์ DOM หรือ SAX เป็นการตัดสินใจออกแบบที่สำคัญมาก DOM ใช้วิธีการสร้างโครงสร้างต้นไม้เพื่อเข้าถึงเอกสาร XML ในขณะที่ SAX ใช้โมเดลเหตุการณ์
ตัวแยกวิเคราะห์ DOM แปลงเอกสาร XML เป็นต้นไม้ที่มีเนื้อหาและสามารถสำรวจต้นไม้ได้ ข้อดีของการแยกวิเคราะห์แบบจำลองด้วย DOM คือการเขียนโปรแกรมง่าย นักพัฒนาจำเป็นต้องโทรหาคำแนะนำในการทำต้นไม้แล้วใช้ API นำทางเพื่อเข้าถึงโหนดต้นไม้ที่ต้องการเพื่อให้งานเสร็จสมบูรณ์ มันง่ายที่จะเพิ่มและแก้ไของค์ประกอบในต้นไม้ อย่างไรก็ตามเนื่องจากเอกสาร XML ทั้งหมดจำเป็นต้องได้รับการประมวลผลเมื่อใช้ตัวแยกวิเคราะห์ DOM ความต้องการประสิทธิภาพและหน่วยความจำจึงค่อนข้างสูงโดยเฉพาะอย่างยิ่งเมื่อพบไฟล์ XML ขนาดใหญ่ เนื่องจากความสามารถในการเดินทางผ่านตัวแยกวิเคราะห์ DOM มักจะใช้ในบริการที่เอกสาร XML ต้องการการเปลี่ยนแปลงบ่อยครั้ง
ตัวแยกวิเคราะห์แซ็กโซโฟนใช้โมเดลตามเหตุการณ์ มันสามารถกระตุ้นชุดของเหตุการณ์เมื่อแยกวิเคราะห์เอกสาร XML เมื่อพบแท็กที่กำหนดจะสามารถเปิดใช้งานวิธีการโทรกลับเพื่อบอกวิธีที่พบแท็ก SAX มักจะต้องใช้หน่วยความจำต่ำเพราะช่วยให้นักพัฒนาตัดสินใจแท็กที่ต้องการประมวลผล โดยเฉพาะอย่างยิ่งเมื่อนักพัฒนาจำเป็นต้องประมวลผลส่วนหนึ่งของข้อมูลที่มีอยู่ในเอกสารความสามารถในการขยายตัวของแซ็กโซโฟนสะท้อนให้เห็นได้ดีขึ้น อย่างไรก็ตามการเข้ารหัสเป็นเรื่องยากเมื่อใช้ตัวแยกวิเคราะห์ SAX และเป็นการยากที่จะเข้าถึงข้อมูลที่แตกต่างกันหลายรายการในเอกสารเดียวกันในเวลาเดียวกัน
【ข้อดี】
①ไม่จำเป็นต้องรอข้อมูลทั้งหมดที่จะประมวลผลและการวิเคราะห์สามารถเริ่มต้นได้ทันที
②ตรวจสอบข้อมูลเฉพาะเมื่ออ่านข้อมูลและไม่จำเป็นต้องบันทึกในหน่วยความจำ
③คุณสามารถหยุดการแยกวิเคราะห์เมื่อมีเงื่อนไขบางอย่างโดยไม่ต้องแยกวิเคราะห์เอกสารทั้งหมด
④ประสิทธิภาพและประสิทธิภาพสูงและสามารถแยกวิเคราะห์เอกสารที่มีขนาดใหญ่กว่าหน่วยความจำระบบ
【ข้อบกพร่อง】
①แอปพลิเคชันจะต้องรับผิดชอบต่อตรรกะการประมวลผลของแท็ก (เช่นการรักษาความสัมพันธ์ระหว่างผู้ปกครอง/เด็ก ฯลฯ ) ยิ่งเอกสารที่ซับซ้อนยิ่งขึ้นโปรแกรมที่ซับซ้อนยิ่งขึ้น
②การนำทางแบบทางเดียวไม่สามารถค้นหาลำดับชั้นของเอกสารได้และเป็นการยากที่จะเข้าถึงส่วนต่าง ๆ ของข้อมูลของเอกสารเดียวกันในเวลาเดียวกันและไม่รองรับ XPATH
3. JDOM (โมเดลวัตถุเอกสารที่ใช้ Java)
จุดประสงค์ของ JDOM คือการเป็นโมเดลเอกสารเฉพาะ Java ซึ่งทำให้การโต้ตอบกับ XML ง่ายขึ้นและเร็วกว่าการใช้ DOM เนื่องจากเป็นรูปแบบเฉพาะของ Java ครั้งแรก JDOM จึงได้รับการส่งเสริมและส่งเสริมอย่างจริงจัง เมื่อพิจารณาถึงการใช้มันเป็น "ส่วนขยายมาตรฐาน Java" ผ่าน "คำขอข้อมูลจำเพาะ Java JSR-102" การพัฒนา JDOM เริ่มต้นตั้งแต่ต้นปี 2000
JDOM และ DOM ส่วนใหญ่แตกต่างกันในสองด้าน ก่อนอื่น JDOM ใช้คลาสคอนกรีตเท่านั้นและไม่ใช่อินเทอร์เฟซ สิ่งนี้ทำให้ API ง่ายขึ้นในบางวิธี แต่ยังจำกัดความยืดหยุ่น ประการที่สอง API ใช้คลาสคอลเลกชันจำนวนมากทำให้การใช้งานของนักพัฒนา Java ง่ายขึ้นซึ่งคุ้นเคยกับชั้นเรียนเหล่านี้แล้ว
เอกสาร JDOM ระบุว่าจุดประสงค์ของมันคือ "ใช้ความพยายาม 20% (หรือน้อยกว่า) ในการแก้ปัญหา Java/XML" (หรือมากกว่า) (หรือมากกว่า) (สันนิษฐานว่าเป็น 20% ตามเส้นโค้งการเรียนรู้) แน่นอนว่า JDOM มีประโยชน์สำหรับแอปพลิเคชัน Java/XML ส่วนใหญ่และนักพัฒนาส่วนใหญ่พบว่า APIs เข้าใจง่ายกว่า DOM มาก JDOM ยังรวมถึงการตรวจสอบพฤติกรรมของโปรแกรมอย่างกว้างขวางเพื่อป้องกันไม่ให้ผู้ใช้ทำอะไรที่ไม่มีความหมายใน XML อย่างไรก็ตามมันยังต้องการให้คุณเข้าใจ XML อย่างเต็มที่เพื่อทำอะไรบางอย่างนอกเหนือจากพื้นฐาน (หรือเข้าใจข้อผิดพลาดในบางกรณี) นี่อาจเป็นงานที่มีความหมายมากกว่าการเรียนรู้อินเทอร์เฟซ DOM หรือ JDOM
JDOM เองไม่มีตัวแยกวิเคราะห์ มันมักจะใช้ตัวแยกวิเคราะห์ SAX2 เพื่อแยกวิเคราะห์และตรวจสอบเอกสารอินพุต XML (แม้ว่ามันจะสามารถใช้การแสดง DOM ที่สร้างขึ้นก่อนหน้านี้เป็นอินพุต) มันมีตัวแปลงบางตัวเพื่อแสดงผลการแสดง JDOM ลงในสตรีมเหตุการณ์ SAX2, โมเดล DOM หรือเอกสารข้อความ XML JDOM เป็นโอเพ่นซอร์สที่เปิดตัวภายใต้ตัวแปรใบอนุญาต Apache
【ข้อได้เปรียบ】
①ใช้คลาสคอนกรีตแทนอินเทอร์เฟซทำให้ DOM API ง่ายขึ้น
②คลาสคอลเลกชัน Java จำนวนมากใช้เพื่ออำนวยความสะดวกให้กับนักพัฒนา Java
【ข้อบกพร่อง】
①ไม่มีความยืดหยุ่นที่ดี
②ประสิทธิภาพที่ไม่ดี
4. DOM4J (โมเดลวัตถุเอกสารสำหรับ Java)
แม้ว่า DOM4J จะแสดงถึงผลการพัฒนาที่เป็นอิสระอย่างสมบูรณ์ แต่ในขั้นต้นมันเป็นสาขาอัจฉริยะของ JDOM มันรวมคุณสมบัติมากมายนอกเหนือจากการแสดงเอกสาร XML พื้นฐานรวมถึงการสนับสนุน XPATH แบบรวมการสนับสนุน XML Schema และการประมวลผลตามเหตุการณ์สำหรับเอกสารขนาดใหญ่หรือสตรีม นอกจากนี้ยังมีตัวเลือกในการสร้างการแสดงเอกสารซึ่งมีการเข้าถึงแบบขนานผ่าน DOM4J API และอินเตอร์เฟส DOM มาตรฐาน มันอยู่ระหว่างการพัฒนามาตั้งแต่ครึ่งหลังของปี 2000
เพื่อรองรับคุณสมบัติทั้งหมดเหล่านี้ DOM4J ใช้อินเทอร์เฟซและวิธีการคลาสพื้นฐานที่เป็นนามธรรม DOM4J ใช้คลาสคอลเลกชันใน API อย่างกว้างขวาง แต่ในหลายกรณีมันยังมีทางเลือกบางอย่างเพื่อให้ประสิทธิภาพที่ดีขึ้นหรือวิธีการเข้ารหัสที่ตรงไปตรงมามากขึ้น ผลประโยชน์โดยตรงคือในขณะที่ DOM4J จ่ายราคาของ API ที่ซับซ้อนมากขึ้น แต่ก็ให้ความยืดหยุ่นมากกว่า JDOM
เมื่อเพิ่มความยืดหยุ่นการรวม XPATH และเป้าหมายของการประมวลผลเอกสารขนาดใหญ่ DOM4J นั้นเหมือนกับ JDOM: ความสะดวกในการใช้งานและการใช้งานที่ใช้งานง่ายสำหรับนักพัฒนา Java นอกจากนี้ยังมุ่งมั่นที่จะกลายเป็นทางออกที่สมบูรณ์มากกว่า JDOM บรรลุเป้าหมายในการจัดการกับปัญหา Java/XML ทั้งหมดในธรรมชาติ เมื่อบรรลุเป้าหมายนี้จะเน้นการเน้นการป้องกันพฤติกรรมแอปพลิเคชันที่ไม่ถูกต้องน้อยกว่า JDOM
DOM4J เป็น Java XML API ที่ยอดเยี่ยมมากพร้อมประสิทธิภาพที่ยอดเยี่ยมฟังก์ชั่นที่ทรงพลังและใช้งานง่ายมาก นอกจากนี้ยังเป็นซอฟต์แวร์โอเพ่นซอร์ส ทุกวันนี้คุณจะเห็นว่าซอฟต์แวร์ Java มากขึ้นเรื่อย ๆ กำลังใช้ DOM4J เพื่ออ่านและเขียน XML โดยเฉพาะอย่างยิ่งคุ้มค่าที่จะกล่าวถึงว่าแม้แต่ Jaxm ของ Sun ก็ใช้ DOM4J
【ข้อได้เปรียบ】
①คลาสคอลเลกชัน Java ใช้กันอย่างแพร่หลายเพื่ออำนวยความสะดวกให้กับนักพัฒนา Java และให้วิธีการอื่นเพื่อปรับปรุงประสิทธิภาพ
②support XPath
③มีประสิทธิภาพที่ดี
【ข้อบกพร่อง】
①อินเทอร์เฟซถูกใช้อย่างกว้างขวางและ API ค่อนข้างซับซ้อน
2. เปรียบเทียบ
1. DOM4J มีประสิทธิภาพที่ดีที่สุดและแม้แต่ JAXM ของ Sun ก็ใช้ DOM4J ปัจจุบันโครงการโอเพ่นซอร์สจำนวนมากใช้ DOM4J ในปริมาณมากเช่นไฮเบอร์เนตที่มีชื่อเสียงยังใช้ DOM4J เพื่ออ่านไฟล์การกำหนดค่า XML หากไม่ได้รับการพิจารณาการพกพาจะใช้ DOM4J
2. JDOM และ DOM ทำงานได้ไม่ดีในระหว่างการทดสอบประสิทธิภาพหน่วยความจำล้นเมื่อทดสอบเอกสาร 10m แต่พกพาได้ นอกจากนี้ยังคุ้มค่าที่จะพิจารณา DOM และ JDOM ในกรณีของเอกสารขนาดเล็ก ในขณะที่นักพัฒนา JDOM ระบุว่าพวกเขาคาดว่าจะมุ่งเน้นไปที่ปัญหาด้านประสิทธิภาพก่อนที่จะมีการเปิดตัวอย่างเป็นทางการจากมุมมองประสิทธิภาพ แต่ก็ไม่ได้แนะนำจริงๆ นอกจากนี้ DOM ยังคงเป็นตัวเลือกที่ดีมาก การใช้งาน DOM นั้นใช้กันอย่างแพร่หลายในภาษาการเขียนโปรแกรมที่หลากหลาย นอกจากนี้ยังเป็นพื้นฐานของมาตรฐานที่เกี่ยวข้องกับ XML อื่น ๆ อีกมากมายเนื่องจากเป็นคำแนะนำอย่างเป็นทางการของ W3C (ตรงข้ามกับโมเดล Java ที่ไม่ได้มาตรฐาน) ดังนั้นจึงอาจจำเป็นในบางประเภทของโครงการเช่นกัน (เช่นการใช้ DOM ใน JavaScript)
3. SAX ทำงานได้ดีขึ้นซึ่งขึ้นอยู่กับวิธีการวิเคราะห์เฉพาะ - ขับเคลื่อนเหตุการณ์ แซ็กโซโฟนตรวจจับสตรีม XML ที่กำลังจะมาถึง แต่ไม่ได้โหลดลงในหน่วยความจำ (แน่นอนเมื่ออ่าน XML สตรีมเอกสารบางฉบับจะถูกซ่อนไว้ในหน่วยความจำชั่วคราว)
ความคิดเห็นของฉัน: หากเอกสาร XML มีขนาดใหญ่และไม่พิจารณาปัญหาการพกพาขอแนะนำให้ใช้ DOM4J; หากเอกสาร XML มีขนาดเล็กขอแนะนำให้ใช้ JDOM; หากจำเป็นต้องดำเนินการในเวลาโดยไม่ต้องบันทึกข้อมูลขอแนะนำให้พิจารณา SAX แต่ไม่ว่าจะเกิดอะไรขึ้นประโยคเดียวกันคือ: สิ่งที่ดีที่สุดคือสิ่งที่ถูกต้อง หากเวลาอนุญาตขอแนะนำให้คุณลองใช้วิธีการทั้งสี่นี้และเลือกวิธีที่เหมาะสมกับคุณ
iii. ตัวอย่าง
เพื่อประหยัดพื้นที่ทั้งสี่วิธีและความแตกต่างในการสร้างเอกสาร XML จะไม่ได้รับที่นี่ในขณะนี้ เฉพาะรหัสสำหรับการแยกวิเคราะห์เอกสาร XML หากจำเป็นต้องมีโครงการที่สมบูรณ์ (การสร้างเอกสาร XML + การแยกการเปรียบเทียบ XML + การทดสอบการทดสอบ)
นี่คือเนื้อหา XML ต่อไปนี้เป็นตัวอย่างสำหรับการแยกวิเคราะห์:
<? xml version = "1.0" การเข้ารหัส = "utf-8"?> <ผู้ใช้> <user id = "0"> <name> Alexia </name> <sy> 23 </ge> <ex> หญิง </ene> <name> wjm </name> <sy> 23 </ge> <ex> หญิง </ex> </suser> <user id = "3"> <name> wh </name> <s Age> 24 </ge> <ex> Male </ene>
ก่อนกำหนดอินเทอร์เฟซสำหรับการแยกวิเคราะห์เอกสาร XML:
/*** @author Alexia** กำหนดอินเตอร์เฟสสำหรับ XML Document Parsing*/Public Interface Xmldocument {/*** แยกวิเคราะห์เอกสาร XML************************************************************************************************* 1. ตัวอย่าง DOM
แพ็คเกจ com.xml; นำเข้า java.io.filenotfoundexception; นำเข้า java.io.fileoutputstream; นำเข้า java.io.ioexception; นำเข้า Java.io.printwriter; นำเข้า Javax.xml.parsers.documentBuilder; javax.xml.parsers.parserconfigurationException; นำเข้า Javax.xml.transform.outputkeys; นำเข้า Javax.xml.transform.transformer; นำเข้า Javax.transform.transformerConfigurationException; javax.xml.transform.transformerfactory; นำเข้า javax.xml.transform.dom.domsource; นำเข้า Javax.xml.transform.stream.streamresult; นำเข้า org.w3c.dom.document; org.xml.sax.saxexception;/** * @author Alexia * * Dom Parsing XML เอกสาร */คลาสสาธารณะ Domdemo ใช้ Xmldocument {เอกสารเอกสารส่วนตัว; โมฆะสาธารณะ parserxml (ชื่อไฟล์สตริง) {ลอง {documentBuilderFactory dbf = documentBuilderFactory.newInstance (); DocumentBuilder db = dbf.newdocumentBuilder (); เอกสารเอกสาร = db.parse (ชื่อไฟล์); ผู้ใช้ nodelist = document.getChildNodes (); สำหรับ (int i = 0; i <users.getLength (); i ++) {node user = users.item (i); Nodelist userInfo = user.getChildNodes (); สำหรับ (int j = 0; j <userInfo.getLength (); j ++) {node node = userInfo.item (j); nodelist usermeta = node.getChildNodes (); สำหรับ (int k = 0; k <usermeta.getLength (); k ++) {ถ้า (usermeta.item (k) .getNodename ()! = "#text") System.out.println (usermeta.item (k) .getNodename () + ":" } system.out.println (); }}} catch (filenotfoundException e) {e.printStackTrace (); } catch (parserconfigurationException e) {e.printstacktrace (); } catch (saxexception e) {e.printstacktrace (); } catch (saxexception e) {e.printstacktrace (); } catch (saxexception e) {e.printstacktrace (); } catch (ioexception e) {e.printstacktrace (); - 2. ตัวอย่างแซ็กโซโฟน
แพ็คเกจ com.xml; นำเข้า java.io.fileinputstream; นำเข้า java.io.filenotfoundexception; นำเข้า java.io.fileoutputstream; นำเข้า java.io.ioException; นำเข้า java.io.Inputstream; javax.xml.parsers.parserconfigurationException; นำเข้า Javax.xml.parsers.saxparser; นำเข้า Javax.xml.parsers.saxparserFactory; นำเข้า javax.xml.transform.utputkeys; javax.xml.transform.transformerconfigurationException; นำเข้า Javax.xml.transform.sax.saxtransformerfactory; นำเข้า Javax.xml.transform.sax.transformerhandler; นำเข้า Javax.xml.transform.stream.streamresult; org.xml.sax.saxexception; นำเข้า org.xml.sax.helpers.attributesimpl; นำเข้า org.xml.sax.helpers.defaulthandler;/** * @author Alexia * * Sax parsing XML Document * {saxparserfactory saxfac = saxparserfactory.newinstance (); ลอง {saxparser saxparser = saxfac.newsaxparser (); inputStream คือ = ใหม่ FileInputStream (ชื่อไฟล์); saxparser.parse (คือ, mysaxhandler ใหม่ ()); } catch (parserconfigurationException e) {e.printstacktrace (); } catch (saxexception e) {e.printstacktrace (); } catch (filenotfoundException e) {e.printStackTrace (); } catch (ioexception e) {e.printstacktrace (); }}} คลาส mysaxhandler ขยาย defaulthandler {boolean hasattribute = false; แอตทริบิวต์แอตทริบิวต์ = null; โมฆะสาธารณะ startDocument () พ่น saxexception {// system.out.println ("เอกสารได้เริ่มการพิมพ์"); } โมฆะสาธารณะ enddocument () พ่น SaxException {// system.out.println ("เอกสารได้สิ้นสุดลงการพิมพ์"); } โมฆะสาธารณะ startElement (สตริง uri, สตริง localname, สตริง qname, แอตทริบิวต์แอตทริบิวต์) พ่น saxexception {if (qname.equals ("ผู้ใช้")) {return; } if (qname.equals ("ผู้ใช้")) {return; } if (attributes.getLength ()> 0) {this.attributes = แอตทริบิวต์; this.hasattribute = true; }} โมฆะสาธารณะ endelement (สตริง uri, สตริง localname, สตริง qname) พ่น saxexception {ถ้า (hasattribute && (แอตทริบิวต์! = null)) {สำหรับ (int i = 0; i <attributes.getLength (); i ++) {system.out.print.print.print.print. }}} อักขระโมฆะสาธารณะ (char [] ch, int start, ความยาว int) พ่น saxexception {system.out.print (สตริงใหม่ (ch, start, ความยาว)); - 3. ตัวอย่าง JDOM
แพ็คเกจ com.xml; นำเข้า java.io.filenotfoundexception; นำเข้า java.io.fileoutputstream; นำเข้า java.io.ioException; นำเข้า java.util.list; นำเข้า org.jdom2.document; นำเข้า org.jdom2.element; org.jdom2.output.xmloutputter;/** * @author Alexia * * JDOM แยกวิเคราะห์เอกสาร XML * */คลาสสาธารณะ JDOMDEMO ใช้ XMLDOCUMENT {โมฆะสาธารณะ parserXML ลอง {document document = builder.build (ชื่อไฟล์); ผู้ใช้องค์ประกอบ = document.getRootelement (); รายการ userlist = users.getChildren ("ผู้ใช้"); สำหรับ (int i = 0; i <userlist.size (); i ++) {องค์ประกอบผู้ใช้ = (องค์ประกอบ) userlist.get (i); รายการ userInfo = user.getChildren (); สำหรับ (int j = 0; j <userinfo.size (); j ++) {system.out.println (((องค์ประกอบ) userinfo.get (j)). getName () + ":" + ((องค์ประกอบ) userInfo.get (j)). getValue (); } system.out.println (); }} catch (jdomexception e) {e.printstacktrace (); } catch (ioexception e) {e.printstacktrace (); - 4. ตัวอย่าง DOM4J
แพ็คเกจ com.xml; นำเข้า java.io.file; นำเข้า java.io.filewriter; นำเข้า java.io.ioexception; นำเข้า java.io.writer; นำเข้า java.util.iterator; นำเข้า org.dom4j.document; นำเข้า org.dom4j.documentException; org.dom4j.io.saxreader; นำเข้า org.dom4j.io.xmlwriter;/** * @author alexia * * dom4j parse xml เอกสาร */คลาสสาธารณะ Dom4jdemo ใช้ Xmldocument saxReader saxReader = new SaxReader (); ลอง {document document = saxreader.read (inputxml); ผู้ใช้องค์ประกอบ = document.getRootelement (); สำหรับ (iterator i = users.elementiterator (); i.hasNext ();) {องค์ประกอบผู้ใช้ = (องค์ประกอบ) i.next (); สำหรับ (iterator j = user.elementiterator (); j.hasNext ();) {element node = (องค์ประกอบ) j.next (); System.out.println (node.getName () + ":" + node.getText ()); } system.out.println (); }} catch (documentException e) {system.out.println (e.getMessage ()); -ข้างต้นเป็นเนื้อหาทั้งหมดของบทความนี้ ฉันหวังว่ามันจะเป็นประโยชน์ต่อการเรียนรู้ของทุกคนและฉันหวังว่าทุกคนจะสนับสนุน wulin.com มากขึ้น