1. استخدم DOM4J لدعم عمليات XPATH
- يمكنك الحصول مباشرة على عنصر بدون تحليل طبقة
كيفية استخدام XPath:
النموذج الأول:/AAA/BBB/CCC ، واحد/يمثل طبقة ، مما يشير إلى أن CCC أسفل BBB أسفل AAA
النموذج الثاني: // BBB ، مما يعني أنه إذا كان الاسم هو نفسه هذا ، فيمكنك الحصول عليه طالما أن الاسم هو BBB. // DDD/BBB: احصل على جميع BBBS أدناه DDD
النموذج الثالث:/AAA/BBB/CCC/*، احصل على جميع العناصر أدناه BBBB و CCC أدناه. /*/*/*/BBB يعني الحد من الطبقات الثلاث الأولى. بغض النظر عن اسم الطبقات الثلاث الأولى ، يمكنك الحصول على جميع BBBs أسفله. //*، احصل على جميع العناصر.
النموذج الرابع: /AAA /BBB [1] ، أول BBB أسفل AAA. /AAA/BBB [Last ()] يعني أنه يتم الحصول على آخر BBB أسفل AAA
النموذج الخامس: //@id ، يعني أنه طالما أن هناك سمة معرف على الملصق ، يمكنك الحصول على جميع سمات المعرف // bbb [id] ، يمكنك الحصول على جميع سمات المعرف طالما أن لديك سمة معرف على BBB ، يمكنك الحصول على BBB مع سمة معرف.
النموذج السادس: // bbb [@id = 'b1'] ، الحصول على جميع bbbs مع معرف السمة والقيمة b1
2. استخدم xpath
بشكل افتراضي ، لا يدعم DOM4J XPATH.
للدعم ، تحتاج إلى استيراد حزم الجرة ، Jaxen-1.1-beta-6.jar
هناك طريقتان: SelectNodes ("تعبير علامة XPath") ؛ الحصول على جميع العناصر ، قائمة الإرجاع ، SelectSingLenode ("XPath Tag Expression") ؛ احصل على عنصر واحد ، والعقدة إرجاع
1. الاستعلام عن قيم جميع عناصر الاسم في XML
الخطوات: الحصول على المستند ، استخدم Method SelectNodes ("XPath Tag Expression") ؛
static static void test1 () يلقي الاستثناء {document = dom4jutils.getDocument (dom4jutils.path) ؛ قائمة <Node> list = document.selectnodes ("// name") ؛ لـ (عقدة العقدة: قائمة) {// العقدة هي القيمة المحددة لكل عنصر // احصل على قيمة محددة لكل سلسلة عنصر s = node.gettext () ؛ system.out.println (s) ؛ }}2. الاستعلام عن قيمة الاسم الأول في XML. الخطوات: احصل على المستند أولاً ، ثم قم ببناء تعبير XPath.
اختبار الفراغ الثابت العام () يلقي استثناء {document = dom4jutils.getDocument (dom4jutils.path) ؛ node name1 = document.selectsinglenode ("// p1 [@id1 = 'aaa']/name") ؛ // احصل على قيمة name string s1 = name1.getText () ؛ System.out.println (S1) ؛ }2. تحليل الحالة
إضافة ، حذف ، استعلام
student.xml
<؟
الطالب
package cn.qing.ov ؛ طالب الفئة العامة {معرف السلسلة الخاصة ؛ اسم السلسلة الخاصة ؛ سن السلسلة الخاصة ؛ السلسلة العامة getId () {معرف الإرجاع ؛} public void setId (string id) {this.id = id ؛ {this.age = Age ؛}@Outride Public String ToString () {return "student [id =" + id + "، name =" + name + "Stuservice.java
package cn.qing.service ؛ import java.io.fileOutputStream ؛ import java.io.writer ؛ import java.util.list ؛ import org.dom4j.document ؛ import org.dom4j.documentException ؛ import org.dom4j.element ؛ import org.dom4j.node org.dom4j.io.saxReader ؛ import org.dom4j.io.xmlWriter ؛ import cn.qing.ov.student ؛ stuservice class public {// إضافة public static void addstu (student student) refresent {saxreader saxreader = new saxreader () ؛ root = document.getRootElement () ؛ // أضف stuelement على عقدة الجذر stu = root.addelement ("stu") ؛ // إضافة معرف ، الاسم ، ageElement id1 = stu.addelement ("id") ؛ element name1 = stu.addelement ("name") id1.settext (student.getId ()) ؛ name1.settext (student.getName ()) ؛ age1.settext (student.getage ()) ؛ // اكتب مرة أخرى إلى XML OutputFormat Format = OutputFormat.CreatePrettyPrint () ؛ FileOutputStream ("src/student.xml") ، format) ؛ xmlWriter.write (document) ؛ xmlWriter.close () القيمة الموجودة في المجموعة هي نفس المعرف الذي تم تمريره في * 5. إذا كان الأمر كذلك ، فقم بحذف STU حيث يوجد المعرف * 6. اكتب مرة أخرى */public static void delstu (string id) يرمي استثناء {saxreader saxreader = new saxreader () ؛ مستند وثيقة = saxreader.read ( document.selectnodes ("// id") ؛ من أجل (عقدة العقدة: قائمة) {string idv = node.gettext () ؛ // الحكم على ما إذا كانت هي نفس القيمة التي تم تمريرها إذا (idv.equals (id)) {// الحصول على عقدة stu stu = node.getparent () ؛ stu.getParent () ؛ stu.remove (stu) ؛}} outputformat format = outputFormat.CreatePrettyPrint () ؛ يلقي الطالب selstu (معرف السلسلة) استثناء {SaxReader SaxReader = New SaxReader () ؛ مستند وثيقة = saxreader.read ("src/student.xml") node.getText () ؛ if (idv.equals (id)) {element stu = node.getParent () ؛ string namev = stu.Element ("name"). getText () ؛ string agev = stu.Element ("age"). getText () ؛اختبار test.java
package cn.qing.test ؛ import cn.qing.ov.student ؛ استيراد cn.qing.service.stuservice ؛ اختبار الطبقة العامة {public static void main (string [] args) rems stispion {// testadd () ؛ // testdel () ؛ student () ؛ stu.setid ("03") ؛ stu.setname ("wangwu") ؛ stu.setage ("18") ؛ stuservice.addstu (stu) ؛} // اختبار طريقة اختبار الفراغ العام (} testssle static static (stuservice.delstu (03 " الطالب = stuservice.selstu ("02") ؛ system.out.println (student.toString ()) ؛}}لكل نوع ، يمكن تعيينه في حزم مختلفة ، وأفكار البرمجة
لخص
ما سبق هو كل محتوى هذه المقالة حول XPath في برمجة Java ، وآمل أن يكون مفيدًا للجميع. يمكن للأصدقاء المهتمين الاستمرار في الرجوع إلى الموضوعات الأخرى ذات الصلة على هذا الموقع. إذا كانت هناك أي أوجه قصور ، فيرجى ترك رسالة لإشارةها. شكرا لك يا أصدقائك لدعمكم لهذا الموقع!