dom4j之xpath解析xml
程序员文章站
2022-05-28 21:03:57
...
Xpath解析
Xpath是xml文档中元素的唯一路径,通过该路径能找到一个或多个Element,与html的xpath有类似的存在意义。dom4j中可以通过getUniquePath()获取当前元素的Xpath。
# dom4j中有三个方法可以用于xpath查询,dom4j-1.6.1,依赖xml-apis-1.0.b2.jar和jaxen-1.1.4.jar
List<Element> list1 = (List<Element>) root.selectNodes("/trans/snd/field");
List<Element> list2 = (List<Element>) root.selectObject("/trans/snd/field");
Element list3 = (Element) root.selectSingleNode("/trans/snd/field[2]"); // index从1开始
Xpath规则(以下**中的元素代表目标元素)
1、选择根元素AAA: /AAA
**<AAA>**
<BBB/>
<CCC/>
<BBB/>
<BBB/>
<DDD>
<BBB/>
</DDD>
<CCC/>
**</AAA>**
2、选择AAA的所有CCC子元素: /AAA/CCC
<AAA>
<BBB/>
**<CCC/>**
<BBB/>
<DDD>
<BBB/>
</DDD>
**<CCC/>**
</AAA>
3、选择AAA的子元素DDD的所有子元素: /AAA/DDD/BBB
<AAA>
<BBB/>
<CCC/>
<BBB/>
<BBB/>
<DDD>
**<BBB/>**
</DDD>
<CCC/>
</AAA>
4、根节点下所有BBB元素: //BBB
<AAA>
**<BBB/>**
<CCC>
**<BBB/>**
</CCC>
<DDD>
**<BBB/>**
</DDD>
</AAA>
5、元素下的所有子元素: /CCC/*
<AAA>
<CCC>
**<DDD>**
<BBB/>
<BBB/>
<EEE/>
<FFF/>
**</DDD>**
</CCC>
</AAA>
6、若目标元素是列表,选中第二个元素(从1开始): /AAA[2]
<AAA>
</BBB>
**</CCC>**
</DDD>
</AAA>
选中最后一个:/AAA[last()]
7、@选中有特定属性的元素: /AAA/CCC[@name]
<AAA>
</BBB>
**<CCC name="attr">
</CCC>**
</DDD>
</AAA>
取反: /AAA/CCC[not(@name)]
8、@选中指定属性值的元素: /AAA/CCC[@name=’attr’]
<AAA>
</BBB>
**<CCC name="attr">
</CCC>**
</DDD>
</AAA>
下一篇: 你们知道什么食物热量高吗?