博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
XML解析--xPath技术
阅读量:4540 次
发布时间:2019-06-08

本文共 3336 字,大约阅读时间需要 11 分钟。

xPath技术解决了dom4j查询比较深层次结构的节点比较繁琐复杂的问题。主要作用是用于快速获取所需的节点对象。xPath是在dom4j中的,使用时需要导入jaxen-1.1-beta-6.jar。

xPath常用的方法

List<Node>  selectNodes("xpath表达式");   查询多个节点对象

Node selectSingleNode("xpath表达式");  查询一个节点对象

xPath表达式语法

  /      绝对路径      表示从xml的根位置开始或子元素(一个层次结构)

  //     相对路径       表示不分任何层次结构的选择元素。

  *      通配符         表示匹配所有元素

  []      条件           表示选择什么条件下的元素

  @     属性            表示选择属性节点

  and     关系          表示条件的与关系(等价于&&)

  text()    文本           表示选择文本内容

表达式使用说明案例

contact.xml文件

1 
2
3
4
张三
5
20
6
15215413777
7
play@126.com
8
435345345
9
10
11
李四
12
21
13
15215413888
14
play@126.com
15
3234234234
16
17

xPath使用案例

1 String xpath = ""; 2          3         /** 4          * 1.      /      绝对路径      表示从xml的根位置开始或子元素(一个层次结构) 5          */ 6         xpath = "/contactList"; 7         xpath = "/contactList/contact"; 8          9         /**10          * 2. //     相对路径       表示不分任何层次结构的选择元素。11          */12         xpath = "//contact/name";13         xpath = "//name";14         15         /**16          * 3. *      通配符         表示匹配所有元素17          */18         xpath = "/contactList/*"; //根标签contactList下的所有子标签19         xpath = "/contactList//*";//根标签contactList下的所有标签(不分层次结构)20         21         /**22          * 4. []      条件           表示选择什么条件下的元素23          */24         //带有id属性的contact标签25         xpath = "//contact[@id]";26         //第二个的contact标签27         xpath = "//contact[2]";28         //选择最后一个contact标签29         xpath = "//contact[last()]";30         31         /**32          * 5. @     属性            表示选择属性节点33          */34         xpath = "//@id"; //选择id属性节点对象,返回的是Attribute对象35         xpath = "//contact[not(@id)]";//选择不包含id属性的contact标签节点36         xpath = "//contact[@id='002']";//选择id属性值为002的contact标签37         xpath = "//contact[@id='001' and @name='eric']";//选择id属性值为001,且name属性为eric的contact标签38         39         /**40          *6.  text()   表示选择文本内容41          */42         //选择name标签下的文本内容,返回Text对象43         xpath = "//name/text()";44         xpath = "//contact/name[text()='张三']";//选择姓名为张三的name标签

代码示例:

删除id属性为002的标签,并删除

1 import java.io.File; 2 import java.io.FileOutputStream; 3  4  5 import org.dom4j.Document; 6 import org.dom4j.DocumentException; 7 import org.dom4j.Element; 8 import org.dom4j.io.OutputFormat; 9 import org.dom4j.io.SAXReader;10 import org.dom4j.io.XMLWriter;11 12 public class Dom4jTest {13 14     public static void main(String[] args) throws Exception{15         Document doc = new SAXReader().read(new File("./src/contact.xml"));16         //使用xPatch查询id为002的记录17         Element elem = (Element)doc.selectSingleNode("//contact[@id='002']");18         System.out.println(elem);19         elem.detach();20         FileOutputStream outputStream = new FileOutputStream(new File("/Users/nick/Desktop/nkcontact.xml"));21         OutputFormat outputFormat = OutputFormat.createPrettyPrint();22         XMLWriter writer = new XMLWriter(outputStream,outputFormat);23         writer.write(doc);24         writer.close();25     }26 27 }

 

转载于:https://www.cnblogs.com/nicker/p/6437481.html

你可能感兴趣的文章
c#序列化应用
查看>>
centos 打印java 堆栈信息
查看>>
APDU指令返回码及其代表含义
查看>>
Kivy / Buildozer VM Ubuntu不能连接到网络的问题解决
查看>>
PHP之Error与Logging函数讲解
查看>>
Dedecms最新版本存储型XSS
查看>>
idea下http响应乱码
查看>>
mybatis sql模板
查看>>
Thirft框架介绍
查看>>
vs2010 单文档MFC 通过加载位图文件作为客户区背景
查看>>
增加Android模拟器的内存
查看>>
python引入导入自定义模块和外部文件--转载Sumomo的博客
查看>>
C#微信开发之旅(一):前言
查看>>
在存储过程中执行3种oracle循环语句
查看>>
keepalived和lvs实现mysql读负载均衡
查看>>
mysql基础知识-操作表数据
查看>>
MS SQLSERVER 第三天
查看>>
appium安装与简单使用
查看>>
《CAP定理》
查看>>
Java类成员(成员变量和方法)的覆盖与隐藏归纳
查看>>