1. Используйте DOM4J для поддержки операций XPath
«Вы можете напрямую получить элемент без слоя по анализу слоя
Как использовать XPath:
Первая форма:/AAA/BBB/CCC, один/представляет слой, указывающий, что CCC ниже BBB ниже AAA получается
Вторая форма: // bbb, что означает, что если имя такое же, как и у этого, вы можете получить его до тех пор, пока имя является BBB. // ddd/bbb: получить все BBB ниже DDD
Третья форма:/aaa/bbb/ccc/*, получите все элементы ниже BBBB и CCC ниже. /*/*/*/BBB означает ограничение первых трех слоев. Независимо от названия первых трех слоев, вы можете получить все BBBS под ним. //*, получите все элементы.
Четвертая форма: /AAA /BBB [1], первый BBB ниже AAA. /Aaa/bbb [last ()] означает, что последний BBB ниже AAA получается
Пятая форма: //@id означает, что до тех пор, пока на метке есть атрибут идентификатора, вы можете получить все атрибуты ID // bbb [@id], вы можете получить все атрибуты идентификатора, если у вас есть атрибут ID на BBB, вы можете получить BBB с атрибутом ID.
Шестая форма: // bbb [@id = 'b1'], получить все BBB с идентификатором атрибута и значением B1
2. Используйте XPath
По умолчанию DOM4J не поддерживает XPath.
Для поддержки вам необходимо импортировать пакеты JAR, JAXEN-1.1-BETA-6.JAR
Есть два метода: selectNodes ("выражение тега xpath"); Получить все элементы, возвращать список, selectsinglenode ("выражение тега Xpath"); Получите один элемент, вернуть узел
1. Запрос значения всех элементов имени в XML
Шаги: Получите документ, используйте метод SelectNodes ("Выражение тега XPATH");
public static void test1 () выбрасывает exection {document document = dom4jutils.getdocument (dom4jutils.path); List <node> list = document.selectnodes ("// name"); Для (узла узла: список) {// Узел - это конкретное значение каждого элемента // Получить конкретное значение каждой строки элемента s = node.getText (); System.out.println (s); }}2. Запрос значение имени в XML. Шаги: сначала получите документ, а затем создайте выражение XPath.
public static void test2 () выбрасывает exection {document document = dom4jutils.getdocument (dom4jutils.path); Node name1 = document.selectsingLenode ("// p1 [@id1 = 'aaa']/name"); // Получить значение name String S1 = name1.getText (); System.out.println (S1); }2. Анализ случая
Добавить, удалить, запросить
Студент.xml
<? xml version = "1.0" Encoding = "utf-8"?> <ditlad> <stu> <id> 01 </id> <mame> Zhangsan </name> <возраст> 20 </age> </stu> <stu> <id> 02 </id> <mame> lisi </name> <возраст> 19 </oge> </stu> </id> <mame>
Студент. Ява
пакет 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 = name string string () {return Age; {this.age = age;}@переопределить публичную строку toString () {return "student [id =" + id + ", name =" + name + ", age =" + age + "]";}}StuService.java
пакет cn.qing.service; импорт java.io.fileoutputstream; import java.io.writer; импорт java.util.list; import org.dom4j.document; импорт org.dom4j.documentexcept org.dom4j.io.saxreader; import org.dom4j.io.xmlwriter; import cn.qing.ov.student; public class stuservice {// Добавить открытый статический void addStu (студент студент) Throws Exception {saxReader SaxReader = new SaxReader (); Document Document = SAXReader ("src/stocted" rery.xml "rery. rrye. rrye. xml" rore/rerpecter. Document.getRootelement (); // Добавить уплотнение в корневой узел stu = root.addelement ("stu"); // Добавить идентификатор, имя, agelement id1 = stu.addelement ("id"); inement name1 = stu.addelement ("имя"); элемент age1 = stu.addelement ("Age"); id1.settext (student.getid ()); name1.settext (student.getname ()); age1.settext (student.getage ()); // Записать обратно в xml outputformat format = outputformat.createprettyprint (); xmlwriter xmlwriter = new xmlwriter (new FileOutputStream ("src/stude.xml"), format); xmlwriter.write (document); xmlwriter.close ();} // Удалить, удалить в соответствии с идентификатором студента/** * * @param id * @Throws Exception * 1. Независимо от того, является ли значение в коллекции таким же, как идентификатор, пройденного в * 5. Если то же самое, удалите STU, в котором находится идентификатор * 6. Напишите */public static void delstu (String Id) Throws Exception {SaxReader SaxReader = new SaxReader (); Document Document = Document.slete ("src/stude.xml"); (Узел узла: список) {string idv = node.getText (); // Судья, так же, как это передаваемое значение if (idv.equals (id)) {// Получить узел элемента stu stu = node.getParent (); // Удалить, чтобы удалить его через node node node = stu.getparent (); = OutputFormat.createPretTyprint (); XmlWriter XmlWriter = new XmlWriter (new FileOutputStream ("src/stude.xml"), format); xmlwriter.write (document); xmlwriter.close ();} // Query Public State Selstu Selstu (String Id) throws execect {saxRake {saxRake saxRake {saxRake {saxReeer asxriter {saxReeer saxRearer {saxReeer {saxRake {saxRake {saxRake {saxReem SaxReader (); Document Document = saxReader.read ("src/stude.xml"); list <node> list = document.selectnodes ("// id"); Student Student = new Student (); for (Node node: list) {// node - это значение каждого идентификатора string = node.getText (); id (id). node.getParent (); string namev = stu.element ("name"). getText (); string agev = stu.element ("age"). getText (); Student.setid (idv); student.setname (namev); student.setage (agev);}} return;}}}}}}}}}}}}}}Тест Тест. Ява
package cn.qing.test;import cn.qing.ov.Student;import cn.qing.service.StuService;public class Test {public static void main(String[] args) throws Exception {//testAdd();//testDel();testSel();}//test Add method public static void testAdd() throws Exception {//Create student object Student stu = new STUNDE (); Stu.SetId ("03"); Stu.SetName ("wangwu"); stu.setage ("18"); StuService.addstu (stu);} // Метод удаления теста Public static void testdel () Исключение {stuservice.delstu ("03");} // test Quere xeccedse -testsel xected xectord xectore xectore xectore xectore xectore xectore xectore. Student = stuservice.selstu ("02"); System.out.println (Student.tostring ());}}Для каждого типа это может быть установлено в разных пакетах, идеи программирования
Суммировать
Приведенное выше содержание этой статьи о XPath в Java Programming, я надеюсь, что это будет полезно для всех. Заинтересованные друзья могут продолжать ссылаться на другие связанные темы на этом сайте. Если есть какие -либо недостатки, пожалуйста, оставьте сообщение, чтобы указать это. Спасибо, друзья, за вашу поддержку на этом сайте!