xml解析-dom4j对XPATH的支持
来源:互联网 发布:南浔住宿推荐 知乎 编辑:程序博客网 时间:2024/06/10 08:52
用dom4j对xml进行解析已经比sax方式简洁了很多,用起来很方便,但是在获取某个元素时依然有点麻烦,要一层一层的获取,这样很麻烦,换好dom4j提供了对XPATH的支持,这里简单介绍一下。
以下面这个xml文件为例:
<?xml version="1.0" encoding="UTF-8"?><person> <p1 id="111"> <name>zhangsan</name> <age>40</age> <sex>nv</sex> </p1> <p1 id="222"> <name>lisi</name> <age>21</age> </p1> <p1 id="333"> <name>wangwu</name> <age>20</age> </p1> </person>
比如我现在想获取p1属性id值为222的元素下面的name元素,如果用dom4j,首先要获取根节点person,然后获取根节点下面的第二个p1元素,最后获取p1下面的name元素,这样操作起来很繁琐,如果xml文件很复杂,这样操作就会相当复杂。如果用XPATH将会很方便,代码如下:
public static void getFirstName() throws Exception{ Document doc = Dom4jUtils.getDocument(); Node name1 = doc.selectSingleNode("//p1[@id='111']/name"); System.out.println("name="+name1.getText()); }
代码中获取document对象的代码我封装在了一个类中,这里不再给出,重点是看获取元素部分代码。大家会发现在获取元素时只调用了一个方法,方法里有一个特殊的字符串,下面给出六种最常用的形式:
/AAA/DDD/BBB 表示AAA下面的DDD下面的BBB元素 //BBB 表示得到所有的BBB元素 /* 表示得到所有元素 BBB[1],BBB[last()] 分别表示第一个BBB元素和最后一个BBB元素 //BBB[@id] 表示得到所有有id属性的BBB元素 //BBB[@id=’aaa’] 表示得到属性值是aaa的BBB元素下面再给出一个例子:
得到所有的name元素
public static void getAllName() throws Exception{ Document doc = Dom4jUtils.getDocument(); List<Node> names = doc.selectNodes("//name"); for(Node name:names) { String s = name.getText(); System.out.println("name="+s); } }
xpath用起来非常方便,这里只做简单介绍,更详细的内容请参考其它博文。
1 0
- xml解析-dom4j对XPATH的支持
- DOM4J+XPath 解析XML
- 使用dom4j的xPath解析XML
- XML 的 Dom4j 解析范例,以及 XPath
- DOM4J解析XML(强大的XPath)
- 使用dom4j的xPath解析XML
- 使用dom4j的xPath解析XML
- Dom4j和XPath的XML解析技术
- xml解析dom4j xpath方式
- dom4j使用XPath解析xml
- xpath和dom4j解析xml
- dom4j对xml的解析
- Java---XML的解析(2)-DOM4J解析/Xpath
- Xpath dom4j解析带有命名空间的XML的方法
- 用dom4j+xpath的方式对xml文件进行读取
- dom4j用XPath解析xml 遇到的问题
- dom4j和xpath解析带名称空间的xml…
- dom4j使用XPath解析XML返回null的解决方法
- Activity-四大组件之一
- 第一章 JAVA入门(Main函数简介)
- ContentProvider使用拾遗
- 按钮的隐藏与不可见
- 常用学术资料搜索大全!都在这里啦!
- xml解析-dom4j对XPATH的支持
- 16进制
- 机器学习中的数学(5)-强大的矩阵奇异值分解(SVD)及其应用
- Qt 学习笔记3 摘自《Qt 学习之路 2》
- 将1230用十六进制表示
- UGUI 实现屏幕外怪物的指示箭头
- 设计模式学习笔记--组合模式
- 自从我整理好了它?UI在也不敢说咋们程序员没审美!
- MWC-MWC2.3及MWC2.4源码下载