實用dom4j操作xpath

2021-07-22 08:00:46 字數 3000 閱讀 8929

w3school的介紹:

xpath 是一門在 xml 文件中查詢資訊的語言。xpath 可用來在 xml 文件中對元素和屬性進行遍歷。 xpath 是 w3c

xslt 標準的主要元素,並且 xquery 和 xpointer 都構建於 xpath 表達之上。 因此,對 xpath 的理解是很多高階

xml 應用的基礎。

我的理解為xpath就是每個標籤節點的路徑。

元素、屬性、文字、命名空間、處理指令、注釋以及文件節點(或稱為根節點)

父、子、同胞、先輩、後代

1、 節點名: 選取此節點的所有子節點。

2、 /節點名: 從根節點擊取。

3、 // 從匹配選擇的當前節點擊擇文件中的節點,而不考慮它們的位置。

4、 . 選取當前節點。

5、 .. 選取當前節點的父節點。

6、 @ 選取屬性。

舉例:

<?xml version="1.0" encoding="utf-8"?>

《西遊記

id="x001">

《作者》吳承恩1作者》

《作者》吳承恩2作者》

《朝代》明朝朝代》

西遊記》

《紅樓夢

id="x002">

《作者》曹雪芹作者》

紅樓夢》

book>

我們直接看例子:

<?xml version="1.0" encoding="utf-8"?>

id="x001">

《作者》吳承恩1作者》

《作者》吳承恩2作者》

《朝代》明朝朝代》

56.00price>

book>

id="x002">

《作者》曹雪芹作者》

33.00price>

book>

books>

1、 /books/book[1] 選取屬於 books 子節點的第乙個 book 元素。

2、 /books/book[last()] 選取屬於 books 子節點的最後乙個 book 元素。

3、 /books/book[last()-1] 選取屬於 books 子節點的倒數第二個 book 元素。

4、 /books/book[position()<3] 選取最前面的兩個屬於 books 元素的子節點素的 book 元素。

5、 //book[@id] 選取所有擁有名為id 屬性的 book元素。

6、 //title[@id=』x001』] 選取所有 book 元素,且這些元素擁有值為x001 的 id 屬性。

7、 /books/book[price>35.00] 選取 books元素的所有 book 元素,且其中的 price 元素的值須大於 35.00。

8、 /books/book[price>35.00]/作者 選取 bookstore 元素中的 book 元素的所有 作者 元素,且其中的 price 元素的值須大於 35.00。

9、 通過豎線按多個條件選取,比如:

//book/作者 | //book/price:選取 book 元素的所有 作者 和 price 元素。

1、 ancestor:選取當前節點的所有先輩(父、祖父等)

2、 ancestor-or-self:選取當前節點的所有先輩(父、祖父等)以及當前節點本身

3、 attribute:選取當前節點的所有屬性

4、 child:選取當前節點的所有子元素。

5、 descendant:選取當前節點的所有後代元素(子、孫等)。

6、 descendant-or-self:選取當前節點的所有後代元素(子、孫等)以及當前節點本身。

7、 following:選取文件中當前節點的結束標籤之後的所有節點。

8、 namespace:選取當前節點的所有命名空間節點

9、 parent:選取當前節點的父節點。

10、 preceding:選取文件中當前節點的開始標籤之前的所有節點。

11、 preceding-sibling:選取當前節點之前的所有同級節點。

12、 self:選取當前節點。

例子:child::book:選取所有屬於當前節點的子元素的 book 節點

attribute::lang:選取當前節點的 lang 屬性

child::*:選取當前節點的所有子元素

attribute::*:選取當前節點的所有屬性

child::text():選取當前節點的所有文字子節點

child::node():選取當前節點的所有子節點

descendant::book:選取當前節點的所有 book 後代

ancestor::book:選擇當前節點的所有 book 先輩

ancestor-or-self::book:選取當前節點的所有book先輩以及當前節點(假如此節點是book節點的話)

child::*/child::price:選取當前節點的所有 price 。

1、引入名為jaxen的jar包

2、我們看一下dom4j的xpath格式,選中乙個節點後,通過node.getpath()獲取這個節點的xpath,發現是這樣的:

/[name()=』book』]/[name()=』chapter』]/*[name()=』section』]

既然dom4j要求這種格式,我們在通過xpath操作節點時就用這種格式好了,

比如:

string xpathcase=

"/*[name()='book']/*[name()='chapter'][3]/*[name()='section']";

list

nodes= node.selectnodes(xpathcase);

即可選到book節點下的第三個chapter節點的所有section節點,有木有很方便!

dom4j操作節點 XPath 語法

dom4j操作節點 xpath 語法 xpath 使用路徑表示式來選取 xml 文件中的節點或節點集。節點是通過沿著路徑 path 或者步 steps 來選取的。我們將在下面的例子中使用這個 xml 文件。下面的例子使用 xml 檔案 books.xml。harry potter 29.99 lea...

dom4j通過xpath查詢xml

獲取document saxreader saxreader new saxreader document document saxreader.read fileutil.getfileinputstream filename 查詢element string xpath rec vol corr...

dom4j中xpath的使用

關鍵字 dom4j xpath 獲取document 查詢element xpath語法 xpath 使用路徑表示式在 xml 文件中選取節點。節點是通過沿著路徑或者 step 來選取的。表示式描述 nodename 選取此節點的所有子節點 從根節點擊取 從匹配選擇的當前節點擊擇文件中的節點,而不考...