1. Utilisez DOM4J pour soutenir les opérations XPATH
«Vous pouvez directement obtenir un élément sans calque par analyse de couche
Comment utiliser XPATH:
Le premier formulaire: / aaa / bbb / ccc, un / représente une couche, indiquant que le CCC en dessous de BBB ci-dessous AAA est obtenu
Le deuxième formulaire: // BBB, ce qui signifie que si le nom est le même que celui-ci, vous pouvez l'obtenir aussi longtemps que le nom est BBB. // DDD / BBB: Obtenez tous les BBBS ci-dessous DDD
Le troisième formulaire: / AAA / BBB / CCC / *, obtenez tous les éléments ci-dessous BBBB et CCC ci-dessous. / * / * / * / Bbb signifie limiter les trois premières couches. Peu importe le nom des trois premières couches, vous pouvez obtenir tous les BBB en dessous. // *, obtenez tous les éléments.
La quatrième forme: / aaa / bbb [1], le premier BBB ci-dessous AAA. / Aaa / bbb [last ()] signifie que le dernier BBB sous AAA est obtenu
Le cinquième formulaire: // @ id, signifie que tant qu'il y a un attribut ID sur l'étiquette, vous pouvez obtenir tous les attributs d'ID // BBB [@ID], vous pouvez obtenir tous les attributs d'ID tant que vous avez un attribut ID sur le BBB, vous pouvez obtenir le BBB avec un attribut ID.
Le sixième formulaire: // bbb [@ id = 'b1'], obtenez tous les BBB avec l'ID d'attribut et la valeur b1
2. Utilisez xpath
Par défaut, Dom4j ne prend pas en charge XPATH.
Pour prendre en charge, vous devez importer des packages en pot, jaxen-1.1-beta-6.jar
Il existe deux méthodes: selectNodes ("XPath Tag Expression"); Obtenez tous les éléments, Return List, SelectSingLenode ("XPath Tag Expression"); Obtenez un élément, retourne nœud
1. Interrogez les valeurs de tous les éléments de nom dans XML
Étapes: Obtenez le document, utilisez la méthode selectNodes ("XPath Tag Expression");
public static void test1 () lève une exception {document document = dom4jutils.getDocument (dom4jutils.path); List <Node> list = document.selectNodes ("// name"); pour (nœud nœud: list) {// nœud est la valeur spécifique de chaque élément // obtient la valeur spécifique de chaque chaîne d'élément s = node.getText (); System.out.println (s); }}2. Interrogez la valeur du prénom dans XML. Étapes: Obtenez d'abord le document, puis créez l'expression XPATH.
public static void test2 () lève une exception {document document = dom4jutils.getDocument (dom4jutils.path); Node name1 = document.selectSingLenode ("// p1 [@ id1 = 'aaa'] / name"); // Obtenez la valeur de la chaîne de nom S1 = name1.getText (); System.out.println (S1); }2. Analyse de cas
Ajouter, supprimer, remettre en question
Student.xml
<? xml version = "1.0" Encoding = "utf-8"?> <Student> <Stu> <id> 01 </id> <name> zhangsan </name> <ge> 20 </ge> </tu> <stu> <id> 02 </id> <name> lisi </name> <age> </ge> </tu> </stu>
étudiant.java
Package cn.qing.ov; étudiant de classe publique {ID de chaîne privée; nom de chaîne privée; âge de chaîne privée; String public getID () {return id;} public void setid (String id) {this.id = id;} public String getName () {return nom;} public Void setName (nom de la chaîne) {this.name = name) {this.age = age;} @ Override public String toString () {return "Student [id =" + id + ", name =" + name + ", age =" + age + "]";}}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.nocumentException; import org.dom4j.element; import org.dom4j.node; import org.dom4j.io.outFort; org.dom4j.io.saxreader; import org.dom4j.io.xmlwriter; import Cn.qing.ov.student; classe publique Stuservice {// ajouter public static void addstu (étudiant étudiant) exception {saxreader saxreader = new saxreader (); root = document.getRootelement (); // ajouter des stuélements sur le nœud racine Stu = root.addelement ("Stu"); // add id, name, AgeElement id1 = Stu.Addelement ("id"); élément name1 = Stu.Addelement ("name"); Element Age1 = Stu.Addelement ("Age"); // ajoute les valeurs id1.seTText (Student.getId ()); name1.seTText (Student.GetName ()); Age1.seTText (Student.Getage ()); // Écrivez à XML OutputFormat Format = OutputFormat.CreatePetTyPrint (); XMLWRiter xmlwriter = new XMLWriter (New FileOutputStream ("src / student.xml"), format); xmlwriter.write (document); xmlwriter.close ();} // supprimer, supprimer en fonction de l'étudiant id / ** * * @param id * @throws exception * 1. whether the value in the collection is the same as the id passed in * 5. If the same, delete the stu where the id is located* 6. Write back */public static void delStu(String id) throws Exception {SAXReader saxReader = new SAXReader();Document document = saxReader.read("src/student.xml");List<Node> list = Document.SelectNodes ("// id"); for (node node: list) {String idv = node.getText (); // juge si c'est la même valeur que la valeur passée if (idv.equals (id)) {// obtient le nœud de l'élément Stu Stu = Node.getParent (); // supprimer le suppression de l'élément de Node Parent Stu Student = STU.GetParent (); Stu.Remove (Stu);}} outputFormat Format = outputformat.createPetTyprint (); xmlwriter xmlwriter = new xmlwriter (new FileOutputStream ("src / student.xml"), format); xmlwriter.write (document); xmlWriter.close (); Student Selstu (String ID) lève une exception {saxReader saxReader = new saxReader (); document document = saxReader.read ("src / student.xml"); list <Node> list = document.selectNodes ("// id"); étudiant student = new Student (); for (nœud nœud: list) {// nœud est la valeur de la valeur de l'idv = nœud nœud: list) {// NODE ES Node.getText (); if (idv.equals (id)) {element stu = node.getParent (); String nameV = stu.element ("name"). getText (); String AgeV = Stu.Element ("Age"). GetText (); Agev);}}}Test test.java
Package CN.Qing.test; Import Cn.qing.ov.Student; Importer Cn.qing.service.STUSERVICE; PUBLIC CLASS TEST {public static void main (String [] args) lève une exception {// TestAdd (); // TestDel (); TestSe Student (); stu.setid ("03"); stu.setName ("wangwu"); stu.setage ("18"); stinservice.addstu (stu);} // test de suppression de la méthode public static Void TestDel () lance l'exception {Stuservice STATICE VOID TESTELSU ("03");} // Test Quary Method Method STATIC STATIC VOID Student = Stuservice.SeStu ("02"); System.out.println (Student.ToString ());}}Pour chaque type, il peut être défini dans différents packages, idées de programmation
Résumer
Ce qui précède est tout le contenu de cet article sur XPATH dans la programmation Java, j'espère que ce sera utile à tout le monde. Les amis intéressés peuvent continuer à se référer à d'autres sujets connexes sur ce site. S'il y a des lacunes, veuillez laisser un message pour le signaler. Merci vos amis pour votre soutien pour ce site!