一、简介

1、使用XPath可以快速精确定位指定的节点,以实现对XML文件的CRUD操作。

2、去网上下载一个“XPath帮助文档”,以便于查看语法等详细信息,最好是那种有很多实例的那种。

3、学习XPath语法。

二、XPath语法

1、基本的XPath语法类似于在一个文件系统中定位文件,如果路径以斜线 / 开始, 那么该路径就表示到一个元素的绝对路径。

【JAVA使用XPath、DOM4J解析XML文件,实现对XML文件的CRUD操作】

2、如果路径以双斜线 // 开头, 则表示选择文档中所有满足双斜线//之后规则的元素(无论层级关系)

【JAVA使用XPath、DOM4J解析XML文件,实现对XML文件的CRUD操作】

3、星号 * 表示选择所有由星号之前的路径所定位的元素

【JAVA使用XPath、DOM4J解析XML文件,实现对XML文件的CRUD操作】

【JAVA使用XPath、DOM4J解析XML文件,实现对XML文件的CRUD操作】

【JAVA使用XPath、DOM4J解析XML文件,实现对XML文件的CRUD操作】

4、方块号里的表达式可以进一步的指定元素, 其中数字表示元素在选择集里的位置, 而last()函数则表示选择集中的最后一个元素.

【JAVA使用XPath、DOM4J解析XML文件,实现对XML文件的CRUD操作】

【JAVA使用XPath、DOM4J解析XML文件,实现对XML文件的CRUD操作】

5、@符号用于选择属性

【JAVA使用XPath、DOM4J解析XML文件,实现对XML文件的CRUD操作】

【JAVA使用XPath、DOM4J解析XML文件,实现对XML文件的CRUD操作】

【JAVA使用XPath、DOM4J解析XML文件,实现对XML文件的CRUD操作】

【JAVA使用XPath、DOM4J解析XML文件,实现对XML文件的CRUD操作】

【JAVA使用XPath、DOM4J解析XML文件,实现对XML文件的CRUD操作】

6、属性的值可以被用来作为选择的准则, normalize-space函数删除了前部和尾部的空格, 并且把连续的空格串替换为一个单一的空格

【JAVA使用XPath、DOM4J解析XML文件,实现对XML文件的CRUD操作】

【JAVA使用XPath、DOM4J解析XML文件,实现对XML文件的CRUD操作】

7.count()函数可以计数所选元素的个数

【JAVA使用XPath、DOM4J解析XML文件,实现对XML文件的CRUD操作】

8.name()函数返回元素的名称, start-with()函数在该函数的第一个参数字符串是以第二个参数字符开始的情况返回true, contains()函数当其第一个字符串参数包含有第二个字符串参数时返回true.

方法:name()函数返回元素的名称, start-with()函数在该函数的第一个参数字符串是以第二个参数字符开始的情况返回true, contains()函数当其第一个字符串参数包含有第二个字符串参数时返回true.

【JAVA使用XPath、DOM4J解析XML文件,实现对XML文件的CRUD操作】
【JAVA使用XPath、DOM4J解析XML文件,实现对XML文件的CRUD操作】
【JAVA使用XPath、DOM4J解析XML文件,实现对XML文件的CRUD操作】
9.string-length函数返回字符串的字符数,你应该用&lt;替代<, 用&gt;代替>
【JAVA使用XPath、DOM4J解析XML文件,实现对XML文件的CRUD操作】
10.多个路径可以用分隔符 | 合并在一起
【JAVA使用XPath、DOM4J解析XML文件,实现对XML文件的CRUD操作】
 
三、使用XPath、Dom4j解析XML文档可以大大减少工作量。
1、Book类:  
 1 package p00.domain;
 2 
 3 public class Book {
 4     public String title;
 5     public double price;
 6     public String id;
 7     public String getId()
 8     {
 9     return id;
10     }
11     public void setId(String id)
12     {
13     this.id=id;
14     }
15     public String getTitle()
16     {
17     return title;
18     }
19     public double getPrice()
20     {
21     return price;
22     }
23     public void setTitle(String title)
24     {
25     this.title=title;
26     }
27     public void setPrice(double price)
28     {
29     this.price=price;
30     }
31     public String toString()
32     {
33     return "图书ISBN为:"+id+"   书名为:"+title+"    价格为:"+price;
34     }
35     
36 }
View Code

写入新文档的公共方法:

 1  /**
 2      * 将得到的xml文档写入新的xml文档
 3      * @param document
 4      * @throws Exception 
 5      */
 6     private static void writeToXMLDocument(Document document) throws Exception {
 7     FileOutputStream fos=new FileOutputStream(new File("xmldata/newbooks.xml"));
 8     OutputStreamWriter osw=new OutputStreamWriter(fos,"utf-8");
 9     /**
10      *使用这种写法才不会产生乱码
11     */
12     XMLWriter writer=new XMLWriter(osw);
13     writer.write(document);
14     writer.close();
15     }
View Code

相关文章: