dom4j之xpath解析xml
阿新 • • 發佈:2019-01-03
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>