1. Verwenden Sie DOM4J, um XPath -Operationen zu unterstützen
»Sie können direkt ein Element ohne Schicht für Schichtanalyse erhalten
So verwenden Sie XPath:
Die erste Form:/AAA/BBB/CCC, eine/repräsentiert eine Schicht
Die zweite Form: // BBB, was bedeutet, dass Sie ihn erhalten, solange der Name BBB ist. // DDD/BBB: Holen Sie sich alle BBBS unter DDD
Die dritte Form:/AAA/BBB/CCC/*erhalten Sie alle Elemente unterhalb von BBBB und CCC unten. /*/*/*/Bbb bedeutet, die ersten drei Schichten zu begrenzen. Egal wie der Name der ersten drei Ebenen, Sie können alle BBBs darunter erhalten. //*, hol dir alle Elemente.
Die vierte Form: /AAA /BBB [1], die erste BBB unter AAA. /AAA/BBB [last ()] bedeutet, dass die letzte BBB unter AAA erhalten wird
Das fünfte Formular: //@id bedeutet, dass Sie alle ID -Attribute erhalten können // BBB [@ID], solange Sie alle ID -Attribute erhalten können, können Sie alle ID -Attribute abrufen, solange Sie ein ID -Attribut auf dem BBB haben, können Sie das BBB mit einem ID -Attribut abrufen.
Die sechste Form: // BBB [@id = 'B1'] erhalten Sie alle BBBs mit Attribut -ID und Wert B1
2. Verwenden Sie XPath
Standardmäßig unterstützt DOM4J XPath nicht.
Um zu unterstützen, müssen Sie JAR-Pakete importieren, Jaxen-1.1-beta-6.jar
Es gibt zwei Methoden: SelectNodes ("XPath Tag -Ausdruck"); Alle Elemente abrufen, Rückgabeliste, auswählen ("XPath -Tag -Ausdruck"); Holen Sie sich ein Element, kehren Sie den Knoten zurück
1. Fragen Sie die Werte aller Namenselemente in XML ab
Schritte: Verwenden Sie das Dokument, verwenden Sie die Methode Selectnodes ("XPath -Tag -Ausdruck");
public static void test1 () löst Ausnahme aus {document document = dom4jutils.getDocument (Dom4jutils.Path); List <node> list = document.Selectnodes ("// name"); für (Knotenknoten: Liste) {// Knoten ist der spezifische Wert jedes Elements // den spezifischen Wert jedes Elements Zeichenfolge s = node.getText (); System.out.println (s); }}2. Fragen Sie den Wert des Vornamens in XML ab. Schritte: Holen Sie sich zuerst das Dokument und erstellen Sie dann den XPath -Ausdruck.
public static void test2 () löst Ausnahme aus {document document = dom4jutils.getDocument (Dom4jutils.Path); Node name1 = document.Selectsinglenode ("// p1 [@id1 = 'aaa']/name"); // den Wert der Namenszeichenfolge s1 = name1.getText () abrufen; System.out.println (S1); }2. Fallanalyse
Hinzufügen, löschen, abfragen
student.xml
<?
student.java
Paket cn.qing.ov; öffentliche Klasse Student {private String -ID; privater String -Name; private String -Alter; 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 =} public publy oderstuserervice.java
Paket cn.qing.service; import Java.io.fileOutputStream; Import Java.io.Writer; import Java.util.list; org.dom4j.document; org.dom4j.io.saxreader; import org.dom4j.io.xmlwriter; import cn.qing.ov.ov.student; öffentliche Klasse Stuservice {// public static void addStu (Student Student) Ausnahme {SAXREADER SAXREADER = New SAXREADER () DOKUTION = DOCUTORS = SAXREADER.READER ("SAXREADER (); root = document.getRootelement (); // Fügen Sie dem Root -Knoten stu = root.addelement ("stu"); // ID, Name, Alter, Alter ID1 = stu.addelement ("ID"); Elementname1 = Stu.Adelement ("Name") hinzu. id1.setText (student.getId ()); name1.setText (student.getName ()); Age1.setText (Student.getage ()); // Schreiben Sie in XML OutputFormat Format = outputFormat.CreatePrettTyprint (); xmlwriter xmlwriter = new Xmlwriter (new New Xmlwriter (new News "(new New (new News). FileOutputStream ("src/student.xml"), format); xmlwriter.write (document); xmlwriter.close ();} // Löschen, löschen nach dem Schüler id/** * * @param id * @throws Ausnahme erstellen. Der Wert in der Sammlung ist der gleiche wie die ID in * 5. Wenn dieselbe, löschen Sie die STU, in der sich die ID befindet. document.Selectnodes ("// id"); für (Knotenknoten: Liste) {String idv = node.getText (); // Beurteilen Sie, ob es dem gleichen Wert ist, wenn (idv.equals (id)) {// den Knoten des Stu -Elements stu = node.getParent (); // DELETen Sie das Node -Element -Element -Element ab. stu.getParent (); stu.remove (stu);}} outputFormat format = outputFormat.CreatePrettTypint (); xmlwriter xmlwriter = neuer xmlwriter (neuer FileOutputStream ("src/student.xml"), format); xmlriter.writer.writer.writer (Dokument); xmlriter.Writer (Dokument) (Dokument); xmlriter.Writer (Dokument) (Dokument); xmlriter.writer (Dokument) (Dokument); xmlriter.writer (Dokument) (Dokument); xmlriter.writer (Dokument) (tecrite); Student Selstu (String ID) löst eine Ausnahme aus {SAXREADER SAXREADER = new SAXReader (); document document = SAXReader.read ("src/student.xml"); list <Node> list = document.Selectnodes ("// id"); student student = new student (). node.getText (); if (idv.equals (id)) {Element stu = node.getParent (); String namev = stu.element ("name"). getText (); String ayv = stu.element ("Alter"). getText ();Test test.java
Paket cn.qing.test; import cn.qing.ov.student; import cn.qing.service Student (); stu.setid ("03"); stu.setName ("wangwu"); stu.setage ("18"); stuservice.addstu (stu);} // Test Delete -Methode public static void testDel () löst die Ausnahme der Ausnahme von Stuservice static static static static static static static static void static void static static static static static static static static static testu ("03");} //} // Test Query method öffentlich öffentlich publikum öffentlich öffentlich öffentlich ("03");} // test query method öffentlich öffentlich öffentlich öffentlich öffentlich öffentlich öffentlich öffentlich öffentlich öffentlich öffentlich öffentlich öffentlich öffentlich öffentlich öffentlich öffentlich öffentlich öffentlich (") student = stuservice.selstu ("02"); System.out.println (Student.ToString ());}}Für jeden Typ kann es in verschiedenen Paketen, Programmierideen, festgelegt werden
Zusammenfassen
Das obige ist der gesamte Inhalt dieses Artikels über XPath in Java -Programmierung. Ich hoffe, es wird für alle hilfreich sein. Interessierte Freunde können weiterhin auf andere verwandte Themen auf dieser Website verweisen. Wenn es Mängel gibt, hinterlassen Sie bitte eine Nachricht, um darauf hinzuweisen. Vielen Dank an Freunde für Ihre Unterstützung für diese Seite!