1. คำนำ
jdom คืออะไร?
JDOM เป็นโครงการโอเพ่นซอร์สที่ใช้โครงสร้างต้นไม้โดยใช้เทคโนโลยี Java บริสุทธิ์เพื่อแยกวิเคราะห์สร้างอนุกรมและทำงานบนเอกสาร XML มันให้บริการการเขียนโปรแกรม Java โดยตรงใช้คุณสมบัติของภาษา Java (วิธีการโอเวอร์โหลด, คอลเลกชัน), รวมฟังก์ชั่นของ SAX และ DOM และทำให้การแยกวิเคราะห์ XML ดั้งเดิมง่ายที่สุดเท่าที่จะทำได้ มันจะง่ายสำหรับเราที่จะใช้ JDOM เพื่อแยกวิเคราะห์ XML
ข้อดีของ JDOM:
1. JDOM อุทิศให้กับเทคโนโลยี Java และใช้หน่วยความจำน้อยกว่าแอปพลิเคชัน DOM
2. JDOM ให้วิธีพื้นฐานที่ง่ายและเป็นตรรกะสำหรับการเข้าถึงข้อมูล XML
3. นอกเหนือจากไฟล์ XML แล้ว JDOM ยังสามารถเข้าถึงแหล่งข้อมูลอื่น ๆ เช่นคุณสามารถสร้างคลาสเพื่อเข้าถึงข้อมูลจากผลลัพธ์การสืบค้น SQL
องค์ประกอบ jdom:
JDOM ประกอบด้วย 6 แพ็คเกจ
คลาสองค์ประกอบแสดงถึงองค์ประกอบของเอกสาร XML
org.jdom: คลาสพื้นฐานที่จะใช้ในการแยกวิเคราะห์ไฟล์ XML
org.jdom.adapters: คลาส Java ที่มีการดัดแปลง DOM
org.jdom.filter: คลาสตัวกรองที่มีเอกสาร XML
org.jdom.input: คลาส Java ที่มีการอ่านเอกสาร XML
org.jdom.output: คลาสที่มีเอกสารเอาต์พุต XML
org.jdom.trans แบบฟอร์ม: มีคลาส Java ที่แปลงอินเทอร์เฟซเอกสาร JDOM XML เป็นอินเตอร์เฟสเอกสาร XML อื่น ๆ
XML คืออะไร?
XML เป็นภาษามาร์กอัปที่ใช้กันอย่างแพร่หลาย มีหลายวิธีในการแยกวิเคราะห์ XML ใน Java รวมถึงวิธีที่ใช้กันมากที่สุดเช่น JDOM, DOM4J, SAX ฯลฯ
ดาวน์โหลดแพ็คเกจ jdom: http://www.jdom.org/downloads/index.html
รหัสของผู้เขียนที่นี่คือการใช้ Java เพื่อสร้าง XML และอ่าน XML ซึ่งใช้เป็นคำแนะนำหมายเหตุเท่านั้น
2. การดำเนินการ
ดาวน์โหลดแพ็คเกจ JDOM, คลายซิปไฟล์ jdom-2.0.6.jar, jdom-2.0.6-javadoc.jar และนำเข้าแพ็คเกจลงในโฟลเดอร์ lib (หมายเหตุหากมีข้อผิดพลาดใด ๆ ให้นำเข้าแพ็คเกจทั้งหมดใน JDOM)
ตัวอย่างที่ 1: สร้างไฟล์ XML โดยใช้ JDOM ด้วยชื่อ people.xml
สร้างคลาสใหม่ careatejdom
แพ็คเกจ com.jdom; นำเข้า java.io.filenotfoundexception; นำเข้า java.io.fileoutputstream; นำเข้า java.io.ioException; นำเข้า org.jdom2.document; นำเข้า org.jdom2.element; {โมฆะสาธารณะคงที่หลัก (สตริง [] args) {// กำหนดองค์ประกอบองค์ประกอบของคนนักเรียน; ผู้คน = องค์ประกอบใหม่ ("คน"); นักเรียน = องค์ประกอบใหม่ ("นักเรียน"); // ตั้งค่าแอตทริบิวต์นักเรียน SetAttribute ("ชื่อ", "Zhang San"); Student.setAttribute ("เงินเดือน", "8000"); // ตั้งค่านักเรียน เอกสารเอกสาร = เอกสารใหม่ (คน); // อ่านรูปแบบและกำหนดให้กับรูปแบบฟอร์แมตรูปแบบปัจจุบัน = format.getCompactFormat (); // เริ่มต้นรูปแบบรูปแบบปัจจุบันการตั้งค่า ("UTF-8"); // ตั้งค่ารูปแบบ XML XML xmloutputter (รูปแบบ); ลอง {// ส่งข้อความที่เขียนไปยังโรงงานและสร้างสตรีมเอาต์พุตไฟล์เพื่อส่งออกข้อมูล xmlout.output (เอกสารใหม่ fileoutputStream ("people.xml")); system.out.println ("ความสำเร็จ!"); blocke.printstacktrace ();} catch (ioexception e) {// todo catch ที่สร้างขึ้นอัตโนมัติ catch.printstacktrace ();}}}/*ผลการทำงาน: <? xml เวอร์ชัน = "1.0" การเข้ารหัส = "utf-8"ตัวอย่างที่ 2: ใช้ JDOM เพื่อแยกวิเคราะห์ people.xml ไฟล์
สร้างคลาส readxml ใหม่
แพ็คเกจ com.jdom; นำเข้า java.io.ioexception; นำเข้า java.util.list; นำเข้า org.jdom2.document; นำเข้า org.jdom2.element; นำเข้า org.jdom2.jdomexception; นำเข้า org.jdom2.input.saxbuilder; {// ตัวสร้างใหม่แยกวิเคราะห์ XMLSAXBUILDER SAX = ใหม่ SaxBuilder (); // สร้างเอกสารเพื่อรับเอกสารข้อมูลเอกสารลอง {// รับ pope.xml เอกสารเอกสาร = sax.build ("people.xml"); People.getChildren (); สำหรับ (int i = 0; i <list.size (); i ++) {element e = list.get (i); // รับค่าแอตทริบิวต์ System.out.println ("ชื่อ:"+e.getattributeValue ("ชื่อ")+"เงินเดือน:" (jdomexception e) {e.printstacktrace ();} catch (ioexception e) {e.printstacktrace ();}}}}/** ผลการทำงาน:* ชื่อ: Zhang San เงินเดือน: 8000 hehe**////แยกวิเคราะห์ xml
วิธีการรับค่าแอตทริบิวต์ที่แตกต่างกันของชื่อแท็กเดียวกันหลายชื่อโดยใช้ jdom <? xml version = "1.0" การเข้ารหัส = "utf-8"?> <การกำหนดค่า> <key name = "China"> <value name = "TextKey"> China </value> <value name = "enabled"> true </value> <ค่า name = "photoidHeight"> 38 </value> <key name = "ผู้ใหญ่"> <value name = "conderpercent"> 0.10 </alues> <value name = "headpercent"> 0.60AdulTheadTeadpercent </value> </key> <key name = "child"> <ค่า name = "crownpercent" </key> <key name = "Australia"> <value name = "textKey"> ออสเตรเลีย </value> <value name = "enabled"> true </value> <value name = "photoidWidth"> 35photoidwidth </value> <value name = "photoidheight" name = "headpercent"> 0.756 "ผู้ใหญ่" headpercent </value> </key> <key name = "child"> <value name = "crownpercent"> 0.072 </value> <value name = "headpercent"> 0.711ChildheadPercent </value> name = "photoidwidth"> 35photoidwidth </value> <value name = "photoidHeight"> 45 </value> <key name = "ผู้ใหญ่"> <value name = "crownpercent"> 0.064 </alues> <value name = "headperCent name = "crownpercent"> 0.078 </alues> <value name = "headpercent"> 0.689ChildheadPercent </value> </key> </key> </configuration> อินพุตแพ็คเกจ; นำเข้า Java.io.ioException; นำเข้า Java.util.arrayList; นำเข้า Java.Util.list; org.jdom.jdomexception; นำเข้า org.jdom.input.saxbuilder; คลาสสาธารณะ readxml { / ** * @param args * / โมฆะคงที่สาธารณะหลัก (สตริง [] args) โยน jdomexception, ioexception // สร้างเอกสารเอกสารเอกสารเอกสารเอกสาร = sb.build (test.class.getClassLoader (). getResourceasstream ("Nation.xml")); // รับองค์ประกอบองค์ประกอบรูทรูท = doc.getRootelement (); // ค้นหา <การกำหนดค่า> -> <sey> รายการ <Element> list = root.getChildren ("key"); รายการ <Element> children = new ArrayList <Element> (); รายการ <Element> childRens = new ArrayList <Element> (); สำหรับ (int i = 0; i <list.size (); i ++) {องค์ประกอบองค์ประกอบ = (องค์ประกอบ) list.get (i); System.out.print (element.getAttributeValue ("ชื่อ")); // ค้นหา <การกำหนดค่า> -> <sey> -> <value> children = element.getChildren ("value"); สำหรับ (int j = 0; j <children.size (); j ++) {element elementchildren = (องค์ประกอบ) children.get (j); // locate <การกำหนดค่า> -> <sey> -> <value name = "photoidWidth"> ถ้า (elementchildren.getattributeValue ("name"). Equals ("photoidWidth")) {// get <การกำหนดค่า> -> <key> System.out.print ("<-----------------" "+elementchildren.getattributeValue (" ชื่อ ")); // รับเนื้อหาของ <การกำหนดค่า>-> <sey>-> <name name =" photoidwidth "> tag system.out.print (", " เด็ก = element.getChildren ("key"); <sey> -> <key name = "child"> -> <value> childrens = elementchildren.getchildren ("value"); if (elementchildrens.getattributeValue ("ชื่อ"). เท่ากับ ("headpercent")) {system.out.println ("<----------->"+elementchildrens.getText ()); - }} 打印结果: จีน <---------> photoidwidth, 38photoidwidth <---------> 0.60Childheadpercentaustralia <---------> photoidwidth, 35photoidwidth <-----------------ด้านบนเป็นวิธีการใช้ JDOM เพื่อแยกวิเคราะห์ XML ใน Java Web แนะนำให้คุณรู้จัก ฉันหวังว่ามันจะเป็นประโยชน์กับคุณ หากคุณมีคำถามใด ๆ โปรดฝากข้อความถึงฉันและบรรณาธิการจะตอบกลับคุณทันเวลา ขอบคุณมากสำหรับการสนับสนุนเว็บไซต์ Wulin.com!