dom4j之xpath解析xml

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>
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值