1. ใช้ DOM4J เพื่อสนับสนุนการดำเนินการ XPATH
- คุณสามารถรับองค์ประกอบโดยตรงโดยไม่ต้องทำการวิเคราะห์เลเยอร์เลเยอร์
วิธีใช้ xpath:
แบบฟอร์มแรก:/aaa/bbb/ccc, one/หมายถึงเลเยอร์แสดงว่า CCC ด้านล่าง BBB ต่ำกว่า AAA ได้รับ
แบบฟอร์มที่สอง: // BBB ซึ่งหมายความว่าหากชื่อเหมือนกันกับแบบนี้คุณจะได้รับมันตราบเท่าที่ชื่อคือ BBB // ddd/bbb: รับ BBBs ทั้งหมดด้านล่าง ddd
แบบฟอร์มที่สาม:/AAA/BBB/CCC/*รับองค์ประกอบทั้งหมดด้านล่าง BBBB และ CCC ด้านล่าง /*/*/*/bbb หมายถึงการ จำกัด สามชั้นแรก ไม่ว่าชื่อของสามชั้นแรกคุณจะได้รับ BBBS ทั้งหมดด้านล่าง //*รับองค์ประกอบทั้งหมด
แบบฟอร์มที่สี่: /AAA /BBB [1], BBB แรกต่ำกว่า AAA /AAA/BBB [สุดท้าย ()] หมายความว่าได้รับ BBB สุดท้ายต่ำกว่า AAA
แบบฟอร์มที่ห้า: //@id หมายความว่าตราบใดที่มีแอตทริบิวต์ ID บนฉลากคุณจะได้รับแอตทริบิวต์ ID ทั้งหมด // BBB [@ID] คุณสามารถรับแอตทริบิวต์ ID ทั้งหมดได้ตราบใดที่คุณมีแอตทริบิวต์ ID บน BBB คุณสามารถรับ BBB ด้วยแอตทริบิวต์ ID
แบบฟอร์มที่หก: // bbb [@id = 'b1'] รับ bbbs ทั้งหมดด้วยรหัสแอตทริบิวต์และค่า b1
2. ใช้ xpath
โดยค่าเริ่มต้น DOM4J ไม่รองรับ XPATH
เพื่อสนับสนุนคุณต้องนำเข้าแพ็คเกจ JAR, JAXEN-1.1-BETA-6.JAR
มีสองวิธี: SelectNodes ("Expression XPath Tag"); รับองค์ประกอบทั้งหมด, รายการส่งคืน, selectsingLenode ("Expression XPath Tag"); รับหนึ่งองค์ประกอบส่งคืนโหนด
1. สอบถามค่าขององค์ประกอบชื่อทั้งหมดใน XML
ขั้นตอน: รับเอกสารใช้เมธอด selectNodes ("xpath tag expression");
โมฆะคงที่สาธารณะ test1 () พ่นข้อยกเว้น {เอกสารเอกสาร = dom4jutils.getDocument (dom4jutils.path); รายการ <node> list = document.selectNodes ("// name"); สำหรับ (โหนดโหนด: รายการ) {// node เป็นค่าเฉพาะของแต่ละองค์ประกอบ // รับค่าเฉพาะของแต่ละองค์ประกอบสตริง s = node.getText (); System.out.println (s); -2. สอบถามค่าของชื่อแรกใน XML ขั้นตอน: รับเอกสารก่อนจากนั้นสร้างนิพจน์ XPath
โมฆะคงที่สาธารณะ test2 () พ่นข้อยกเว้น {เอกสารเอกสาร = dom4jutils.getDocument (dom4jutils.path); โหนด name1 = document.selectsingLenode ("// p1 [@id1 = 'aaa']/name"); // รับค่าของชื่อสตริง s1 = name1.getText (); System.out.println (S1); -2. การวิเคราะห์กรณี
เพิ่มลบข้อความค้นหา
student.xml
<? xml version = "1.0" การเข้ารหัส = "utf-8"?> <student> <stu> <id> 01 </id> <name> Zhangsan </name> <sy> 20 </ge> </stu> <stu> <id> 02 </id>
student.java
แพ็คเกจ cn.qing.ov; นักเรียนชั้นสาธารณะ {string private id; ชื่อสตริงส่วนตัว; สตริงส่วนตัวอายุ; สตริงสาธารณะ getid () {return id;} โมฆะสาธารณะ setId (String id) {this.id = id;} สตริงสาธารณะ getName () {ชื่อคืน {this.age = age;}@Override Public String toString () {return "นักเรียน [id =" + id + ", name =" + name + ", age =" + age + "]";}}Stuservice.java
แพ็คเกจ cn.qing.service; นำเข้า java.io.fileoutputstream; นำเข้า java.io.writer; นำเข้า java.util.list; นำเข้า org.dom4j.document; นำเข้า org.dom4j.documentException; นำเข้า org.dom4j.element; org.dom4j.io.saxreader; นำเข้า org.dom4j.io.xmlwriter; นำเข้า cn.qing.ov.student; Stuservice ระดับสาธารณะ {// เพิ่มโมฆะคงที่สาธารณะ addstu (นักเรียน) โยนข้อยกเว้น document.getRootelement (); // เพิ่ม stuelement บนโหนดรูท stu = root.addelement ("stu"); // เพิ่ม ID, ชื่อ, อายุการเลือกตั้ง ID1 = stu.addelement ("id"); องค์ประกอบชื่อ 1 = stu.addelement ("ชื่อ"); id1.settext (student.getId ()); name1.settext (student.getName ()); อายุ 1.Settext (student.getage ()); // เขียนกลับไปที่ XML outputFormat format = outputFormat.CreatePretTyPrint (); fileOutputStream ("src/student.xml"), รูปแบบ); xmlwriter.write (เอกสาร); xmlwriter.close ();} // ลบ, ลบตาม ID นักเรียน/** * @param id * @throws @throws ค่าในคอลเลกชันนั้นเหมือนกับ ID ที่ส่งผ่านใน * 5. ถ้าเหมือนกันให้ลบ STU โดยที่ ID อยู่ที่ * 6. เขียนกลับ */โมฆะสาธารณะคงที่ Delstu (String ID) โยนข้อยกเว้น {SaxReader SaxReader = new SaxReader () เอกสาร = saxReader.Read (โหนดโหนด: รายการ) {string idv = node.getText (); // ตัดสินว่ามันเหมือนกับค่าที่ผ่านถ้า (idv.equals (id)) {// รับโหนดขององค์ประกอบ stu stu = node.getparent (); = outputFormat.CreatePretTyPrint (); xmlWriter xmlWriter = ใหม่ xmlWriter (ใหม่ fileOutputStream ("src/student.xml"), รูปแบบ); xmlwriter.write (เอกสาร); xmlwriter.close () saxReader (); เอกสารเอกสาร = saxReader.read ("src/student.xml"); รายการ <node> list = document.selectNodes ("// id") นักเรียนนักเรียน = นักเรียนใหม่ (); สำหรับ (โหนดโหนด: รายการ) node.getParent (); string namev = stu.element ("ชื่อ"). getText (); String agev = stu.element ("อายุ"). getText (); student.setId (idv); student.setName (namev); setting.setage (agev);ทดสอบทดสอบ. java
แพ็คเกจ cn.qing.test; นำเข้า cn.qing.ov.student; นำเข้า cn.qing.service.stuservice; การทดสอบระดับสาธารณะ {โมฆะคงที่สาธารณะหลัก (สตริง [] args) โยนข้อยกเว้น {// testadd (); // testdel () นักเรียน (); stu.setid ("03"); stu.setName ("wangwu"); stu.setage ("18"); stuservice.addstu (stu);} // ทดสอบวิธีการลบโมฆะ public} testdel () {stuservice.delstu (stuservice.delstu student = stuservice.selstu ("02"); system.out.println (student.toString ());}}สำหรับแต่ละประเภทสามารถตั้งค่าในแพ็คเกจที่แตกต่างกันแนวคิดการเขียนโปรแกรม
สรุป
ข้างต้นเป็นเนื้อหาทั้งหมดของบทความนี้เกี่ยวกับ XPATH ในการเขียนโปรแกรม Java ฉันหวังว่ามันจะเป็นประโยชน์กับทุกคน เพื่อนที่สนใจสามารถอ้างถึงหัวข้ออื่น ๆ ที่เกี่ยวข้องในเว็บไซต์นี้ต่อไป หากมีข้อบกพร่องใด ๆ โปรดฝากข้อความไว้เพื่อชี้ให้เห็น ขอบคุณเพื่อนที่ให้การสนับสนุนเว็บไซต์นี้!