欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

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>