1. Use DOM4J para admitir operaciones XPATH
―Se puede obtener directamente un elemento sin capa mediante análisis de capa
Cómo usar XPATH:
La primera forma:/aaa/bbb/ccc, una/representa una capa, lo que indica que el CCC debajo de BBB debajo de AAA se obtiene
La segunda forma: // bbb, lo que significa que si el nombre es el mismo que este, puede obtenerlo siempre que el nombre sea BBB. // DDD/BBB: obtenga todos los BBB por debajo de DDD
La tercera forma:/AAA/BBB/CCC/*, obtenga todos los elementos debajo de BBBB y CCC a continuación. /*/*/*/BBB significa limitar las primeras tres capas. No importa cuál sea el nombre de las primeras tres capas, puede obtener todos los BBB por debajo. //*, obtenga todos los elementos.
La cuarta forma: /AAA /BBB [1], el primer BBB debajo de AAA. /AAA/BBB [Last ()] significa que se obtiene el último BBB por debajo de AAA
El quinto formulario: //@id, significa que mientras haya un atributo de identificación en la etiqueta, puede obtener todos los atributos de identificación // bbb [@id], puede obtener todos los atributos de identificación siempre que tenga un atributo de ID en el BBB, puede obtener el BBB con un atributo de ID.
La sexta forma: // bbb [@id = 'b1']], obtenga todos los BBB con ID de atributo y valor B1
2. Use xpath
Por defecto, DOM4J no admite XPATH.
Para admitir, debe importar paquetes jar, jaxen-1.1-beta-6.jar
Hay dos métodos: selectNodes ("expresión de etiqueta xpath"); Obtenga todos los elementos, la lista de retorno, selectsingLenode ("expresión de la etiqueta xpath"); Obtenga un elemento, return nodo
1. Consulte los valores de todos los elementos de nombre en XML
Pasos: obtenga el documento, use el método selectNodes ("expresión de la etiqueta xpath");
public static void test1 () lanza la excepción {documento de documento = dom4jutils.getDocument (dom4jutils.path); List <node> list = document.selectNodes ("// name"); for (nodo nodo: list) {// nodo es el valor específico de cada elemento // obtener el valor específico de cada cadena de elemento S = node.gettext (); System.out.println (s); }}2. Consulte el valor del primer nombre en XML. Pasos: obtenga primero el documento y luego cree la expresión de XPath.
public static void test2 () lanza la excepción {documento de documento = dom4jutils.getDocument (dom4jutils.path); Nodo name1 = document.selectsingLenode ("// p1 [@id1 = 'aaa']/name"); // Obtener el valor del nombre String S1 = name1.gettext (); System.out.println (S1); }2. Análisis de casos
Agregar, eliminar, consultar
estudiante.xml
<? xml versión = "1.0" encoding = "utf-8"?> <student> <stu> <id> 01 </id> <name> zhangsan </name> <ge> 20 </gen> </tu> <stu> <id> 02 </id> <name> lisi </name> <ge> 19 </gen> </stu> </tu>
estudiante.java
paquete cn.qing.ov; public class Student {private String id; private String Name; private String Age; 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;} public String getage () {Age de retorno;} {this.age = age;}@anular public String toString () {return "student [id =" + id + ", name =" + name + ", edad =" + edad + "]";}}stuservice.java
paquete cn.qing.service; import java.io.fileOutputStream; import java.io.writer; import java.util.list; importar org.dom4j.document; importar org.dom4j.documentException; import org.dom4j.Element; import org.dom4j.io.saxreader; import org.dom4j.io.xmlwriter; import cn.qing.ov.student; public class stuservice {// Agregar public static void addstu (estudiante estudiante) lanza excepción {saxreader saxreer = new saxreader (); documento = saxreader.read ("src/sraxmlml; document.getRoOtElement (); // Agregar el estado de combate en el nodo raíz stu = root.addelement ("stu"); // agregue id, nombre, ageElement id1 = stu.addelement ("id"); elemento name1 = stu.addelement ("nombre"); elemento edad1 = stu.addelement ("edad"); // add the value id1.settext (student.getid ()); name1.settext (student.getName ()); edad1.settext (student.getage ()); // Escriba a XML outputFormat format = outputFormat.CreatePrettyPrint (); XMLWriter XMLWriter = new XMLWriter (new New FileoutputStream ("src/student.xml"), format); xmlwriter.write (documento); xmlwriter.close ();} // eliminar, eliminar según el estudiante id/** * * @param id * @throws excepción * 1. Cree un * 2. Obtener documento * 3. Obtenga el ID en XML, use xpath, y devuelva la excepción de la lista * 1. Determine si el valor en la colección es el mismo que el ID pasado en * 5. Si es el mismo, elimine el STU donde se encuentra la ID * 6. Escribir hacia atrás */public static void delstu (ID de cadena) lanza la excepción {saxreader saxreader = new saxreader (); documento = saxreader.read.read ("src/student.xml"); list <node> list = list = document.selectNodes ("// id"); for (nodo nodo: list) {string idv = node.gettext (); // juzga si es el mismo que el valor aprobado if (idv.equals (id)) {// Obtener el nodo de stu elemento stu = node.getParent (); // delete es para eliminarlo a través del elemento de nodo principal = stu.getParent (); stu.remove (stu);}} outputFormat format = outputFormat.CreatePrettyPrint (); XMLWriter xmlwriter = new XMLWriter (new FileOutputStream ("src/student.xml"), format); xmlwriter.Write (documento); xmlwrit.clase (); Selstu (ID de cadena) lanza la excepción {saxreader saxreader = new saxreader (); document document = saxreader.read ("src/student.xml"); list <node> list = document.selectnodes ("// id"); estudiante student = new student (); for (nodo: list) {// node es el valor de cada ident de identificación de cadena = node.gettext (); if (idv.equals (id)) {elemento stu = node.getParent (); string nameV = stu.element ("name"). getText (); string ageV = stu.Enement ("edad"). getText (); student.setID (idv); student.setName (namev); stu.setage (agev);}}}}}}}}}}}}}Prueba test.java
paquete cn.qing.test; import cn.qing.ov.student; import cn.qing.service.stuservice; public class test {public static void main (string [] args) lanza la excepción {// testAdd (); // testdel (); testel ();} // Test add Method Public static void testAdd () shows Exception {// Student (); stu.setId ("03"); stu.setName ("wangwu"); stu.setage ("18"); stuservice.addstu (stu);} // test Eliminar método público void static void testdel () Exception {stuservice.delstu ("03");}/} // Método estatic de static static void void void excepción de thussstsssels () Student = stuservice.selstu ("02"); System.out.println (Student.ToString ());}}Para cada tipo, se puede configurar en diferentes paquetes, ideas de programación
Resumir
Lo anterior es todo el contenido de este artículo sobre XPath en la programación Java, espero que sea útil para todos. Los amigos interesados pueden continuar referiéndose a otros temas relacionados en este sitio. Si hay alguna deficiencia, deje un mensaje para señalarlo. ¡Gracias amigos por su apoyo para este sitio!