使用dom4j支持xpath的操作
可以直接獲取到某個元素
第一種形式
/AAA/DDD/BBB: 表示一層一層的,AAA下面 DDD下面的BBB
第二種形式
//BBB: 表示和這個名稱相同,表示只要名稱是BBB,都得到
第三種形式
*: 所有元素
第四種形式
** BBB[1]: 表示第一個BBB元素
×× BBB[last()]:表示最後一個BBB元素
第五種形式
** //BBB[@id]: 表示只要BBB元素上面有id屬性,都得到
第六種形式
//BBB[@id=‘b1’] 表示元素名稱是BBB,在BBB上面有id屬性,並且id的屬性值是b1
使用dom4j支持xpath具體操作
** 默認的情況下,dom4j不支持xpath
** 如果想要在dom4j裏面是有xpath
* 第一步需要,引入支持xpath的jar包,使用 jaxen-1.1-beta-6.jar
** 需要把jar包導入到項目中
** 在dom4j裏面提供了兩個方法,用來支持xpath
*** selectNodes("xpath表達式")
- 獲取多個節點
*** selectSingleNode("xpath表達式")
- 獲取一個節點
使用xpath實現:查詢xml中所有name元素的值
** 所有name元素的xpath表示: //name
** 使用selectNodes("//name");
** 代碼和步驟
/*
* 1、得到document
* 2、直接使用selectNodes("//name")方法得到所有的name元素
*
* */
//得到document
Document document = Dom4jUtils.getDocument(Dom4jUtils.PATH);
//使用selectNodes("//name")方法得到所有的name元素
List<Node> list = document.selectNodes("//name");
//遍歷list集合
for (Node node : list) {
//node是每一個name元素
//得到name元素裏面的值
String s = node.getText();
System.out.println(s);
}
使用xpath實現:獲取第一個p1下面的name的值
* //p1[@id1='aaaa']/name
* 使用到 selectSingleNode("//p1[@id1='aaaa']/name")
* 步驟和代碼
/*
* 1、得到document
* 2、直接使用selectSingleNode方法實現
* - xpath : //p1[@id1='aaaa']/name
* */
//得到document
Document document = Dom4jUtils.getDocument(Dom4jUtils.PATH);
//直接使用selectSingleNode方法實現
Node name1 = document.selectSingleNode("//p1[@id1='aaaa']/name"); //name的元素
//得到name裏面的值
String s1 = name1.getText();
System.out.println(s1);