dom4j之xpath解析xml

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_33440246/article/details/81636752
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>

猜你喜欢

转载自blog.csdn.net/qq_33440246/article/details/81636752