XML——XPATH语法介绍
为什么需要xpath? 在使用dom4j的时候,我们不能跨层获取某一个元素,必须一层一层去获取,这就非常麻烦。
xpath的基础语法有以下几点: 1.基本的xpath语法类似于在一个文件系统中定位文件,如果路径以斜线 (1) <AAA>这里
<BBB/>
<CCC/>
<BBB/>
<BBB/>
<DDD>
<BBB/>
<DDD/>
<CCC/>
<AAA/>这里
(2) <AAA>
<BBB/>
<CCC/>这里
<BBB/>
<BBB/>
<DDD>
<BBB/>
<DDD/>
<CCC/>这里
<AAA/>
(3) <AAA>
<BBB/>
<CCC/>
<BBB/>
<BBB/>
<DDD>
<BBB/>这里
<DDD/>
<CCC/>
<AAA/>
那么怎么在dom4j中运用xpath呢?其实很简单: //1.得到SAXReader解析器
SAXReader saxReader = new SAXReader();
//2.指定去解析哪个文件
Document document = saxReader.read(new File(path));
//3.可以使用xpath随心读取
// document.selectNodes(args)返回多个元素
// document.selectSingleNode(args)返回单个元素
List nodes = document.selectNodes("/AAA/BBB");
通过dom4j得到document对象后,可以使用document的 同时它也有一个 下面继续介绍其他的xpath语法: 2.如果路径以双斜线 (1) <AAA>
<BBB/>这里
<CCC/>
<BBB/>这里
<DDD>
<BBB/>这里
</DDD>
<CCC>
<DDD>
<BBB/>这里
<BBB/>这里
</DDD>
</CCC>
</AAA>
(2) <AAA>
<BBB/>
<CCC/>
<BBB/>
<DDD>
<BBB/>这里
</DDD>
<CCC>
<DDD>
<BBB/>这里
<BBB/>这里
</DDD>
</CCC>
</AAA>
3.星号 (1) <AAA>
<XXX>
<DDD>
<BBB/>
<BBB/>
<EEE/>
<FFF/>
</DDD>
</XXX>
<CCC>
<DDD>
<BBB/>这里
<BBB/>这里
<EEE/>这里
<FFF/>这里
</DDD>
</CCC>
<CCC>
<BBB>
<BBB>
<BBB/>
</BBB>
</BBB>
</CCC>
</AAA>
(2) <AAA>
<XXX>
<DDD>
<BBB/>这里
<BBB/>这里
<EEE/>
<FFF/>
</DDD>
</XXX>
<CCC>
<DDD>
<BBB/>这里
<BBB/>这里
<EEE/>
<FFF/>
</DDD>
</CCC>
<CCC>
<BBB>这里
<BBB>
<BBB/>
</BBB>
</BBB>
</CCC>
</AAA>
(3) 4.方括号里的表达式可以进一步地指定元素,其中数字表示元素在选择集里的位置,而last()函数则表示选择集中的最后一个元素。特别要注意的是这里的下标是从1开始的,而不是0! <AAA>
<BBB/>这个
<BBB/>
<BBB/>
<BBB/>
</AAA>
(2) <AAA>
<BBB/>
<BBB/>
<BBB/>
<BBB/>这个
</AAA>
5.对属性的操作 (1) <AAA>
<BBB id="b1"/>返回这里的id属性节点
<BBB id="b2"/>也返回这里的id属性节点
<BBB name="bbb"/>
<BBB/>
</AAA>
(2) <AAA>
<BBB id="b1"/>返回这个BBB节点
<BBB id="b2"/>也返回这个BBB节点
<BBB name="bbb"/>
<BBB/>
</AAA>
(3) <AAA>
<BBB id="b1"/>
<BBB id="b2"/>
<BBB name="bbb"/>返回这个BBB节点
<BBB/>
</AAA>
(4) <AAA>
<BBB id="b1"/>返回这个BBB节点
<BBB id="b2"/>返回这个BBB节点
<BBB name="bbb"/>返回这个BBB节点
<BBB/>
</AAA>
(5) <AAA>
<BBB id="b1"/>
<BBB id="b2"/>
<BBB name="bbb"/>
<BBB/>这个
</AAA>
6.属性的值可以被用来作为选择的准则 (1) <AAA>
<BBB id="b1"/>这个
<BBB name="bbb"/>
<BBB name="bbb"/>
</AAA>
7. (1) <AAA>
<CCC>
<BBB/>
<BBB/>
<BBB/>
</CCC>
<DDD>返回这个元素
<BBB/>
<BBB/>
</DDD>
<EEE>
<CCC/>
<DDD/>
</EEE>
</AAA>
(2) <AAA>
<CCC>
<BBB/>
<BBB/>
<BBB/>
</CCC>
<DDD>返回这个元素
<BBB/>
<BBB/>
</DDD>
<EEE>也返回这个元素
<CCC/>
<DDD/>
</EEE>
</AAA>
另外,上述介绍的几点语法可以任意组合,比如下述的xml文档: <AAA>
<BBB id="b1">
<CCC>
<KKK>k1</KKK>
</CCC>
<CCC>
<KKK>k2</KKK>这个
</CCC>
</BBB>
<BBB id="b2"/>
<BBB name="bbb"/>
</AAA>
假如我们现在要找AAA元素下面的第1个BBB子元素下面的第2CCC子元素的KKK子元素,则xpath路径应该这么写: (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |