1. Gunakan DOM4J untuk mendukung operasi XPath
―Anda dapat secara langsung mendapatkan elemen tanpa analisis lapisan demi lapisan
Cara menggunakan xpath:
Bentuk pertama:/AAA/BBB/CCC, satu/mewakili lapisan, menunjukkan bahwa CCC di bawah BBB di bawah AAA diperoleh
Bentuk kedua: // BBB, yang berarti bahwa jika namanya sama dengan yang ini, Anda bisa mendapatkannya selama namanya BBB. // DDD/BBB: Dapatkan semua BBB di bawah DDD
Bentuk ketiga:/AAA/BBB/CCC/*, dapatkan semua elemen di bawah BBBB dan CCC di bawah ini. /*/*/*/BBB berarti membatasi tiga lapisan pertama. Tidak peduli apa nama tiga lapisan pertama, Anda bisa mendapatkan semua BBB di bawahnya. //*, dapatkan semua elemen.
Bentuk keempat: /AAA /BBB [1], BBB pertama di bawah AAA. /AAA/BBB [terakhir ()] berarti bahwa BBB terakhir di bawah AAA diperoleh
Bentuk kelima: //@id, berarti bahwa selama ada atribut ID pada label, Anda bisa mendapatkan semua atribut ID // BBB [@ID], Anda bisa mendapatkan semua atribut ID selama Anda memiliki atribut ID pada BBB, Anda bisa mendapatkan BBB dengan atribut ID.
Formulir Keenam: // BBB [@ID = 'B1'], dapatkan semua BBB dengan ID Atribut dan Nilai B1
2. Gunakan xpath
Secara default, DOM4J tidak mendukung XPath.
Untuk mendukung, Anda perlu mengimpor paket toples, jaxen-1.1-beta-6.jar
Ada dua metode: SelectNodes ("XPath Tag Expression"); Dapatkan semua elemen, daftar pengembalian, selectsingLenode ("XPath Tag Expression"); Dapatkan satu elemen, kembalikan node
1. Permintaan nilai semua elemen nama di XML
Langkah: Dapatkan dokumen, gunakan metode selectnodes ("XPath Tag Expression");
public static void test1 () melempar pengecualian {dokumen dokumen = dom4jutils.getDocument (dom4jutils.path); Daftar <Node> list = document.selectnodes ("// name"); untuk (node node: list) {// node adalah nilai spesifik dari setiap elemen // dapatkan nilai spesifik dari setiap elemen string s = node.getText (); System.out.println (s); }}2. Permintaan nilai nama depan di XML. Langkah -langkah: Dapatkan dokumen terlebih dahulu, lalu bangun ekspresi XPath.
public static void test2 () melempar pengecualian {dokumen dokumen = dom4jutils.getDocument (dom4jutils.path); Node name1 = document.selectsinglenode ("// p1 [@id1 = 'aaa']/name"); // Dapatkan nilai nama string s1 = name1.getText (); System.out.println (S1); }2. Analisis kasus
Tambahkan, hapus, permintaan
Student.xml
<? Xml Version = "1.0" encoding = "UTF-8"?> <sahisau> <tu> <ding> 01 </den> <name> zhangsan </name> <mua> 20 </efage> </tu> <tu> <den> 02 </id> <nama> Lisi </name> <tu> </Id> 02 </id> <name> lisi </name> <tu> 19 </usia </st/st/st/st/st/st/st/st/st/name </name> <tu> 19 </usia </st/st/st/st/st/st/st/st/st/st/stU </name> <nage> 19 </seusia> </id> <name> lisi </name> <tu> 19 </seumur
Student.java
Paket cn.qing.ov; siswa kelas publik {private string id; nama string pribadi; private string usia; public string getId () {return id;} public void setid (string id) {this.id = id;} public string getName () {return name;} public void setName (string name) {this.name name;} name; {this.age = usia;}@override public string toString () {return "student [id =" + id + ", name =" + name + ", usia =" + usia + "]";}}stuservice.java
Paket cn.qing.service; impor java.io.fileoutputstream; impor java.io.writer; impor java.util.list; impor org.dom4j.document; impor org.dom4j.documentException; impor org.dom4j.element; impor org.dom4j.node; org.dom4j.io.saxreader; impor org.dom4j.io.xmlwriter; impor cn.qing.ov.student; kelas publik stuservice {// tambahkan void static public addStu (mahasiswa) lemparan document {saxreader saxreader = saxreader baru (); dokumen = Saxreader Saxreader = baru SaxReader (); Dokumen = Saxreader Saxreader = baru SaxReader (); saxreader.read ("src/student.xml"); element root = document.getrooteLement (); // tambahkan stuelement pada simpul root stu = root.addelement ("stu"); // tambahkan id, name, eveneelement id1 = stu.addelement ("id"); element name1 = stUElement ID1 = stu.addelement ("id"); element name1 = stUElement ID1 = Stu.addelement ("ID"); element name1 = STU1 = stUElement ID1 = Stu.Addelement ("id"); element name1 = STU1 = stUElement ID1 = Stu.adelement ("ID"); element name1 = STU1 = stUElement ID1 = Stu. Stu.addelement ("Age"); // Tambahkan nilai ID1.SETTEXT (student.getId ()); name1.setText (student.getname ()); usia1.setText (student.getage ()); // Kembali ke xml outputFormat format = outputFormat.createPretty (); FileOutputStream ("src/student.xml"), format); xmlwriter.write (dokumen); xmlwriter.close ();} // hapus, hapus sesuai dengan ID Student/** * * @param Id * @throws Exception * 1. Buat parser * 2. Dapatkan dokumen * 3. Dapatkan Id dalam Id dalam @Throws Exception * Tentukan apakah nilai dalam koleksi sama dengan ID yang diteruskan di * 5. Jika sama, hapus Stu di mana ID berada * 6. Tulis kembali */public static void delstu (string ID) Lempar Exception {Saxreader Saxreader = New Saxreader (); Dokumen Dokumen = Saxreader. document.selectNodes("//id");for (Node node : list) {String idv = node.getText();//Judge whether it is the same as the passed value if(idv.equals(id)) {//Get the node of stu Element stu = node.getParent();//Delete is to delete it through the parent node Element student = Stu.getParent (); Stu.remove (Stu);}} outputformat format = outputformat.createPrettyPrint (); xmlwriter xmlwriter = xmlwriter baru (query -write ("src/student.xml"), format); xmlwrwrite ("src/student. Siswa Statis Selstu (ID String) melempar Exception {SAXREADER SAXREADER = SaxReader baru (); dokumen dokumen = saxreader.read ("src/student.xml"); daftar <node> document = document.selectnodes ("// id"); siswa siswa = siswa baru (node> untuk node (node) ("// ID"); Siswa Siswa = Siswa baru (); untuk Node (node) ("node (" // ID "); Siswa Siswa = Siswa baru (); node.getText (); if (idv.equals (id)) {elemen stu = node.getParent (); string namev = stu.element ("name"). getText (); string agev = stu.Tes tes.java
Paket cn.qing.test; impor cn.qing.ov.student; impor cn.qing.service.stuservice; tes kelas publik {public static void main (string [] args) melempar pengecualian {// testAdd (); // testdel (); testsel ();} // {uji {uji {{{) {{{uji) {{{); Student (); stu.setid ("03"); Stu.setname ("wangwu"); stu.setage ("18"); stuservice.addstu (stu);} // tes hapus metode public void testdel () lemparan pengecualian {stuservice.delstu ("03"); {Student Student = stuservice.selstu ("02"); System.out.println (Student.ToString ());}}Untuk setiap jenis, dapat diatur dalam paket yang berbeda, ide pemrograman
Meringkaskan
Di atas adalah semua konten dari artikel ini tentang XPath dalam pemrograman Java, saya harap ini akan membantu semua orang. Teman yang tertarik dapat terus merujuk ke topik terkait lainnya di situs ini. Jika ada kekurangan, silakan tinggalkan pesan untuk menunjukkannya. Terima kasih teman atas dukungan Anda untuk situs ini!