日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

xpath技术,用在dom4j中

發布時間:2024/9/5 编程问答 37 豆豆
生活随笔 收集整理的這篇文章主要介紹了 xpath技术,用在dom4j中 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

title: xPath語法應用
tags: xPath,dom4j
grammar_cjkRuby: true
---

在dom4j中,會使用到xPath技術。
在項目中導入 jaxen-1.1-beta-6.jar 包,有這個包才支持xPath技術

其語法如下:

/ 絕對路徑 表示從xml的根位置開始或子元素(一個層次結構)
// 相對路徑 表示不分任何層次結構的選擇元素。
* 通配符 表示匹配所有元素
[] 條件 表示選擇什么條件下的元素
@ 屬性 表示選擇屬性節點
and 關系 表示條件的與關系(等價于&&)
text() 文本 表示選擇文本內容
.

/絕對路徑表示從xml的根位置開始或子元素(一個層次結構)
//相對路徑表示不分任何層次結構的選擇元素。
.選取當前節點。
..選取當前節點的父節點。
*通配符表示匹配所有元素節點
[]條件表示選擇什么條件下的元素
@屬性表示選擇屬性節點
and關系表示條件的與關系(等價于&&)
text()文本表示選擇文本內容
nodename選取此節點名的所有子節點。
node()匹配任何類型的節點。

博客園xPath實例

實例 1

基本的XPath語法類似于在一個文件系統中定位文件,如果路徑以斜線 / 開始, 那么該路徑就表示到一個元素的絕對路徑

/AAA

選擇根元素AAA

<AAA> <BBB/> <CCC/> <BBB/> <BBB/> <DDD> <BBB/> </DDD> <CCC/> </AAA>

/AAA/CCC

選擇AAA的所有CCC子元素

<AAA> <BBB/> <CCC/> <BBB/> <BBB/> <DDD> <BBB/> </DDD> <CCC/> </AAA>

/AAA/DDD/BBB

選擇AAA的子元素DDD的所有子元素

<AAA> <BBB/> <CCC/> <BBB/> <BBB/> <DDD> <BBB/> </DDD> <CCC/> </AAA>

實例 2

如果路徑以雙斜線 // 開頭, 則表示選擇文檔中所有滿足雙斜線//之后規則的元素(無論層級關系)

//BBB

選擇所有BBB元素

<AAA> <BBB/> <CCC/> <BBB/> <DDD> <BBB/> </DDD> <CCC> <DDD> <BBB/> <BBB/> </DDD> </CCC> </AAA>

//DDD/BBB

選擇所有父元素是DDD的BBB元素

<AAA> <BBB/> <CCC/> <BBB/> <DDD> <BBB/> </DDD> <CCC> <DDD> <BBB/> <BBB/> </DDD> </CCC> </AAA>

實例 3

星號 * 表示選擇所有由星號之前的路徑所定位的元素

/AAA/CCC/DDD/*

選擇所有路徑依附于/AAA/CCC/DDD的元素

<AAA> <XXX> <DDD> <BBB/> <BBB/> <EEE/> <FFF/> </DDD> </XXX> <CCC> <DDD> <BBB/> <BBB/> <EEE/> <FFF/> </DDD> </CCC> <CCC> <BBB> <BBB> <BBB/> </BBB> </BBB> </CCC> </AAA>

/* / * / */BBB

選擇所有的有3個祖先元素的BBB元素

<AAA> <XXX> <DDD> <BBB/> <BBB/> <EEE/> <FFF/> </DDD> </XXX> <CCC> <DDD> <BBB/> <BBB/> <EEE/> <FFF/> </DDD> </CCC> <CCC> <BBB> <BBB> <BBB/> </BBB> </BBB> </CCC> </AAA>

//*

選擇所有元素

<AAA> <XXX> <DDD> <BBB/> <BBB/> <EEE/> <FFF/> </DDD> </XXX> <CCC> <DDD> <BBB/> <BBB/> <EEE/> <FFF/> </DDD> </CCC> <CCC> <BBB> <BBB> <BBB/> </BBB> </BBB> </CCC> </AAA>

實例 4

方塊號里的表達式可以進一步的指定元素, 其中數字表示元素在選擇集里的位置, 而last()函數則表示選擇集中的最后一個元素.

/AAA/BBB1

選擇AAA的第一個BBB子元素

<AAA> <BBB/> <BBB/> <BBB/> <BBB/> </AAA>

/AAA/BBB[last()]

選擇AAA的最后一個BBB子元素

<AAA> <BBB/> <BBB/> <BBB/> <BBB/> </AAA>

實例 5

//@id

選擇所有的id屬性

<AAA> <BBB id = "b1"/> <BBB id = "b2"/> <BBB name = "bbb"/> <BBB/> </AAA>

//BBB[@id]

選擇有id屬性的BBB元素

<AAA> <BBB id = "b1"/> <BBB id = "b2"/> <BBB name = "bbb"/> <BBB/> </AAA>

//BBB[@name]

選擇有name屬性的BBB元素

<AAA> <BBB id = "b1"/> <BBB id = "b2"/> <BBB name = "bbb"/> <BBB/> </AAA>

//BBB[@*]

選擇有任意屬性的BBB元素

<AAA> <BBB id = "b1"/> <BBB id = "b2"/> <BBB name = "bbb"/> <BBB/> </AAA>

//BBB[not(@*)]

選擇沒有屬性的BBB元素

<AAA> <BBB id = "b1"/> <BBB id = "b2"/> <BBB name = "bbb"/> <BBB/> </AAA>

實例 6

屬性的值可以被用來作為選擇的準則, normalize-space函數刪除了前部和尾部的空格, 并且把連續的空格串替換為一個單一的空格

//BBB[@id='b1']

選擇含有屬性id且其值為'b1'的BBB元素

<AAA> <BBB id = "b1"/> <BBB name = " bbb "/> <BBB name = "bbb"/> </AAA>

//BBB[@name='bbb']

選擇含有屬性name且其值為'bbb'的BBB元素

<AAA> <BBB id = "b1"/> <BBB name = " bbb "/> <BBB name = "bbb"/> </AAA>

//BBB[normalize-space(@name)='bbb']

選擇含有屬性name且其值(在用normalize-space函數去掉前后空格后)為'bbb'的BBB元素

<AAA> <BBB id = "b1"/> <BBB name = " bbb "/> <BBB name = "bbb"/> </AAA>

實例 7

count()函數可以計數所選元素的個數

//*[count(BBB)=2]

選擇含有2個BBB子元素的元素

<AAA> <CCC> <BBB/> <BBB/> <BBB/> </CCC> <DDD> <BBB/> <BBB/> </DDD> <EEE> <CCC/> <DDD/> </EEE> </AAA>

//*[count(*)=2]

選擇含有2個子元素的元素

<AAA> <CCC> <BBB/> <BBB/> <BBB/> </CCC> <DDD> <BBB/> <BBB/> </DDD> <EEE> <CCC/> <DDD/> </EEE> </AAA>

//* [count(*)=3]

選擇含有3個子元素的元素

<AAA> <CCC> <BBB/> <BBB/> <BBB/> </CCC> <DDD> <BBB/> <BBB/> </DDD> <EEE> <CCC/> <DDD/> </EEE> </AAA>

實例 8

name()函數返回元素的名稱, start-with()函數在該函數的第一個參數字符串是以第二個參數字符開始的情況返回true, contains()函數當其第一個字符串參數包含有第二個字符串參數時返回true.

//*[name()='BBB']

選擇所有名稱為BBB的元素(這里等價于//BBB)

<AAA> <BCC> <BBB/> <BBB/> <BBB/> </BCC> <DDB> <BBB/> <BBB/> </DDB> <BEC> <CCC/> <DBD/> </BEC> </AAA>

//*[starts-with(name(),'B')]

選擇所有名稱以"B"起始的元素

<AAA> <BCC> <BBB/> <BBB/> <BBB/> </BCC> <DDB> <BBB/> <BBB/> </DDB> <BEC> <CCC/> <DBD/> </BEC> </AAA>

//*[contains(name(),'C')]

選擇所有名稱包含"C"的元素

<AAA> <BCC> <BBB/> <BBB/> <BBB/> </BCC> <DDB> <BBB/> <BBB/> </DDB> <BEC> <CCC/> <DBD/> </BEC> </AAA>

實例 10

多個路徑可以用分隔符 | 合并在一起

//CCC | //BBB

選擇所有的CCC和BBB元素

<AAA> <BBB/> <CCC/> <DDD> <CCC/> </DDD> <EEE/> </AAA>

/AAA/EEE | //BBB

選擇所有的BBB元素和所有是AAA的子元素的EEE元素

<AAA> <BBB/> <CCC/> <DDD> <CCC/> </DDD> <EEE/> </AAA>

/AAA/EEE | //DDD/CCC | /AAA | //BBB

可以合并的路徑數目沒有限制

<AAA> <BBB/> <CCC/> <DDD> <CCC/> </DDD> <EEE/> </AAA>

實例 11

child軸(axis)包含上下文節點的子元素, 作為默認的軸,可以忽略不寫.

/AAA

等價于 /child::AAA

<AAA> <BBB/> <CCC/> </AAA>

/child::AAA

等價于/AAA

<AAA> <BBB/> <CCC/> </AAA>

/AAA/BBB

等價于/child::AAA/child::BBB

<AAA> <BBB/> <CCC/> </AAA>

/child::AAA/child::BBB

等價于/AAA/BBB

<AAA> <BBB/> <CCC/> </AAA>

/child::AAA/BBB

二者都可以被合并

<AAA> <BBB/> <CCC/> </AAA>

實例 12

descendant (后代)軸包含上下文節點的后代,一個后代是指子節點或者子節點的子節點等等, 因此descendant軸不會包含屬性和命名空間節點.

/descendant : : *

選擇文檔根元素的所有后代.即所有的元素被選擇

<AAA> <BBB> <DDD> <CCC> <DDD/> <EEE/> </CCC> </DDD> </BBB> <CCC> <DDD> <EEE> <DDD> <FFF/> </DDD> </EEE> </DDD> </CCC> </AAA>

/AAA/BBB/descendant : : *

選擇/AAA/BBB的所有后代元素

<AAA> <BBB> <DDD> <CCC> <DDD/> <EEE/> </CCC> </DDD> </BBB> <CCC> <DDD> <EEE> <DDD> <FFF/> </DDD> </EEE> </DDD> </CCC> </AAA>

//CCC/descendant : : *

選擇在祖先元素中有CCC的所有元素

<AAA> <BBB> <DDD> <CCC> <DDD/> <EEE/> </CCC> </DDD> </BBB> <CCC> <DDD> <EEE> <DDD> <FFF/> </DDD> </EEE> </DDD> </CCC> </AAA>

//CCC/descendant : : DDD

選擇所有以CCC為祖先元素的DDD元素

<AAA> <BBB> <DDD> <CCC> <DDD/> <EEE/> </CCC> </DDD> </BBB> <CCC> <DDD> <EEE> <DDD> <FFF/> </DDD> </EEE> </DDD> </CCC> </AAA>

實例 13

parent軸(axis)包含上下文節點的父節點, 如果有父節點的話

//DDD/parent: : *

選擇DDD元素的所有父節點

<AAA> <BBB> <DDD> <CCC> <DDD/> <EEE/> </CCC> </DDD> </BBB> <CCC> <DDD> <EEE> <DDD> <FFF/> </DDD> </EEE> </DDD> </CCC> </AAA>

實例 14

ancestor軸(axis)包含上下節點的祖先節點, 該祖先節點由其上下文節點的父節點以及父節點的父節點等等諸如此類的節點構成,所以ancestor軸總是包含有根節點,除非上下文節點就是根節點本身.

/AAA/BBB/DDD/CCC/EEE/ancestor : : *

選擇一個絕對路徑上的所有節點

<AAA> <BBB> <DDD> <CCC> <DDD/> <EEE/> </CCC> </DDD> </BBB> <CCC> <DDD> <EEE> <DDD> <FFF/> </DDD> </EEE> </DDD> </CCC> </AAA>

//FFF/ancestor : : *

選擇FFF元素的祖先節點

<AAA> <BBB> <DDD> <CCC> <DDD/> <EEE/> </CCC> </DDD> </BBB> <CCC> <DDD> <EEE> <DDD> <FFF/> </DDD> </EEE> </DDD> </CCC> </AAA>

實例 15

following-sibling軸(axis)包含上下文節點之后的所有兄弟節點

/AAA/BBB/following-sibling : : *

<AAA> <BBB> <CCC/> <DDD/> </BBB> <XXX> <DDD> <EEE/> <DDD/> <CCC/> <FFF/> <FFF> <GGG/> </FFF> </DDD> </XXX> <CCC> <DDD/> </CCC> </AAA>

//CCC/following-sibling: : *

<AAA> <BBB> <CCC/> <DDD/> </BBB> <XXX> <DDD> <EEE/> <DDD/> <CCC/> <FFF/> <FFF> <GGG/> </FFF> </DDD> </XXX> <CCC> <DDD/> </CCC> </AAA>

實例 16

preceding-sibling 軸(axis)包含上下文節點之前的所有兄弟節點

/AAA/XXX/preceding-sibling : : *

<AAA> <BBB> <CCC/> <DDD/> </BBB> <XXX> <DDD> <EEE/> <DDD/> <CCC/> <FFF/> <FFF> <GGG/> </FFF> </DDD> </XXX> <CCC> <DDD/> </CCC> </AAA>

//CCC/preceding-sibling : : *

<AAA> <BBB> <CCC/> <DDD/> </BBB> <XXX> <DDD> <EEE/> <DDD/> <CCC/> <FFF/> <FFF> <GGG/> </FFF> </DDD> </XXX> <CCC> <DDD/> </CCC> </AAA>

實例 17

following軸(axis)包含同一文檔中按文檔順序位于上下文節點之后的所有節點, 除了祖先節點,屬性節點和命名空間節點

/AAA/XXX/following : : *

<AAA> <BBB> <CCC/> <ZZZ> <DDD/> <DDD> <EEE/> </DDD> </ZZZ> <FFF> <GGG/> </FFF> </BBB> <XXX> <DDD> <EEE/> <DDD/> <CCC/> <FFF/> <FFF> <GGG/> </FFF> </DDD> </XXX> <CCC> <DDD/> </CCC> </AAA>

//ZZZ/following : : *

<AAA> <BBB> <CCC/> <ZZZ> <DDD/> <DDD> <EEE/> </DDD> </ZZZ> <FFF> <GGG/> </FFF> </BBB> <XXX> <DDD> <EEE/> <DDD/> <CCC/> <FFF/> <FFF> <GGG/> </FFF> </DDD> </XXX> <CCC> <DDD/> </CCC> </AAA>

實例 18

preceding軸(axis)包含同一文檔中按文檔順序位于上下文節點之前的所有節點, 除了祖先節點,屬性節點和命名空間節點

/AAA/XXX/preceding: : *

<AAA> <BBB> <CCC/> <ZZZ> <DDD/> </ZZZ> </BBB> <XXX> <DDD> <EEE/> <DDD/> <CCC/> <FFF/> <FFF> <GGG/> </FFF> </DDD> </XXX> <CCC> <DDD/> </CCC> </AAA>

//GGG/preceding : : *

<AAA> <BBB> <CCC/> <ZZZ> <DDD/> </ZZZ> </BBB> <XXX> <DDD> <EEE/> <DDD/> <CCC/> <FFF/> <FFF> <GGG/> </FFF> </DDD> </XXX> <CCC> <DDD/> </CCC> </AAA>

實例 19

descendant-or-self 軸(axis)包含上下文節點本身和該節點的后代節點

/AAA/XXX/descendant-or-self : : *

<AAA> <BBB> <CCC/> <ZZZ> <DDD/> </ZZZ> </BBB> <XXX> <DDD> <EEE/> <DDD/> <CCC/> <FFF/> <FFF> <GGG/> </FFF> </DDD> </XXX> <CCC> <DDD/> </CCC> </AAA>

//CCC/descendant-or-self : : *

<AAA> <BBB> <CCC/> <ZZZ> <DDD/> </ZZZ> </BBB> <XXX> <DDD> <EEE/> <DDD/> <CCC/> <FFF/> <FFF> <GGG/> </FFF> </DDD> </XXX> <CCC> <DDD/> </CCC> </AAA>

實例 20

ancestor-or-self 軸(axis)包含上下文節點本身和該節點的祖先節點

/AAA/XXX/DDD/EEE/ancestor-or-self : : *

<AAA> <BBB> <CCC/> <ZZZ> <DDD/> </ZZZ> </BBB> <XXX> <DDD> <EEE/> <DDD/> <CCC/> <FFF/> <FFF> <GGG/> </FFF> </DDD> </XXX> <CCC> <DDD/> </CCC> </AAA>

//GGG/ancestor-or-self : : *

<AAA> <BBB> <CCC/> <ZZZ> <DDD/> </ZZZ> </BBB> <XXX> <DDD> <EEE/> <DDD/> <CCC/> <FFF/> <FFF> <GGG/> </FFF> </DDD> </XXX> <CCC> <DDD/> </CCC> </AAA>

實例 21

ancestor, descendant, following, preceding 和self軸(axis)分割了XML文檔(忽略屬性節點和命名空間節點), 不能交迭, 而一起使用則包含所有節點

//GGG/ancestor : : *

<AAA> <BBB> <CCC/> <ZZZ/> </BBB> <XXX> <DDD> <EEE/> <FFF> <HHH/> <GGG> <JJJ> <QQQ/> </JJJ> <JJJ/> </GGG> <HHH/> </FFF> </DDD> </XXX> <CCC> <DDD/> </CCC> </AAA>

//GGG/descendant: : *

<AAA> <BBB> <CCC/> <ZZZ/> </BBB> <XXX> <DDD> <EEE/> <FFF> <HHH/> <GGG> <JJJ> <QQQ/> </JJJ> <JJJ/> </GGG> <HHH/> </FFF> </DDD> </XXX> <CCC> <DDD/> </CCC> </AAA>

//GGG/following:: *

<AAA> <BBB> <CCC/> <ZZZ/> </BBB> <XXX> <DDD> <EEE/> <FFF> <HHH/> <GGG> <JJJ> <QQQ/> </JJJ> <JJJ/> </GGG> <HHH/> </FFF> </DDD> </XXX> <CCC> <DDD/> </CCC> </AAA>

//GGG/preceding:: *

<AAA> <BBB> <CCC/> <ZZZ/> </BBB> <XXX> <DDD> <EEE/> <FFF> <HHH/> <GGG> <JJJ> <QQQ/> </JJJ> <JJJ/> </GGG> <HHH/> </FFF> </DDD> </XXX> <CCC> <DDD/> </CCC> </AAA>

//GGG/self:: *

<AAA> <BBB> <CCC/> <ZZZ/> </BBB> <XXX> <DDD> <EEE/> <FFF> <HHH/> <GGG> <JJJ> <QQQ/> </JJJ> <JJJ/> </GGG> <HHH/> </FFF> </DDD> </XXX> <CCC> <DDD/> </CCC> </AAA>

//GGG/ancestor:: * | //GGG/descendant:: * | //GGG/following:: * | //GGG/preceding:: * | //GGG/self:: *

<AAA> <BBB> <CCC/> <ZZZ/> </BBB> <XXX> <DDD> <EEE/> <FFF> <HHH/> <GGG> <JJJ> <QQQ/> </JJJ> <JJJ/> </GGG> <HHH/> </FFF> </DDD> </XXX> <CCC> <DDD/> </CCC> </AAA>

實例 22

div運算符做浮點除法運算, mod運算符做求余運算, floor函數返回不大于參數的最大整數(趨近于正無窮), ceiling返回不小于參數的最小整數(趨近于負無窮)

//BBB[position() mod 2 = 0 ]

選擇偶數位置的BBB元素

<AAA> <BBB/> <BBB/> <BBB/> <BBB/> <BBB/> <BBB/> <BBB/> <BBB/> <CCC/> <CCC/> <CCC/> </AAA>

//BBB[ position() = floor(last() div 2 + 0.5) or position() = ceiling(last() div 2 + 0.5) ]

選擇中間的BBB元素

<AAA> <BBB/> <BBB/> <BBB/> <BBB/> <BBB/> <BBB/> <BBB/> <BBB/> <CCC/> <CCC/> <CCC/> </AAA>

//CCC[ position() = floor(last() div 2 + 0.5) or position() = ceiling(last() div 2 + 0.5) ]

選擇中間的CCC元素

<AAA> <BBB/> <BBB/> <BBB/> <BBB/> <BBB/> <BBB/> <BBB/> <BBB/> <CCC/> <CCC/> <CCC/> </AAA>

轉載于:https://www.cnblogs.com/renboqie/p/5568813.html

總結

以上是生活随笔為你收集整理的xpath技术,用在dom4j中的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 中文字幕人妻精品一区 | 亚洲国产av一区二区三区 | 欧美成人免费观看视频 | av网站大全在线观看 | 亚欧洲精品视频在线观看 | 91网站免费看 | 久久综合亚洲精品 | 少妇高潮一区二区三区99小说 | 亚洲涩涩视频 | 日本伊人网 | 国产精品久久久久久久久免费桃花 | 日韩av一区在线 | 亚洲美女在线视频 | 老鸭窝视频在线观看 | 四川丰满少妇被弄到高潮 | 国产精品日 | 伊人久久国产 | 丁香花电影免费播放电影 | 欧美特级黄 | 国产精品视频在线播放 | 村上凉子av | 漂亮人妻被黑人久久精品 | 美女视频污 | 日韩精品一区二区av | 日韩精品一区二区三区免费视频 | 香港三日本8a三级少妇三级99 | 亚洲色图一区二区三区 | 男女男精品视频网站 | 婷婷免费 | 欧美中文字幕在线视频 | 一本一道精品欧美中文字幕 | 久久精品欧美一区二区三区不卡 | 中文字幕精品久久久久人妻红杏1 | 成人午夜剧场视频网站 | 成人免费毛片男人用品 | 99天堂网| 欧美成人精品激情在线观看 | 国产精品一级黄片 | 超碰av人人 | 91天天射 | 一级黄色短视频 | 日韩毛片基地 | 久草网视频在线观看 | 九九热视频免费 | 久久国产精品首页 | 亚洲视频在线观看网站 | 两个人做羞羞的视频 | 高清一区二区三区 | 免费av软件 | 一个人在线免费观看www | 中文一区视频 | 亚洲天堂热 | 一本色道久久综合精品婷婷 | 丰满多毛的大隂户视频 | av手机天堂 | 狠狠影院 | 人妖性做爰aaaa | 骚色综合 | 乳揉みま痴汉4在线播放 | 又污又黄的视频 | 蜜桃视频黄色 | 久久视频在线播放 | 久久国产人妻一区二区免色戒电影 | 国产麻豆一区二区 | 六月丁香在线视频 | 日韩人体视频 | 在线视频观看一区 | 国产黄色三级 | 天堂av网址 | 欧美乱轮| 天堂av网址 | 真性中出 | 操模特 | 潘金莲一级淫片免费放动漫 | 欧美一级爱爱 | 免费看欧美黑人毛片 | 国产精品一区二区麻豆 | 人妻中文字幕一区 | 国产精品免费看片 | 香蕉久久久久久 | 香蕉视频最新网址 | 成人国产精品免费观看视频 | 一区二区三区在线观看免费视频 | 少妇一级淫片免费 | 艳妇乳肉豪妇荡乳xxx | 手机在线播放av | 无码aⅴ精品一区二区三区 精品久久在线 | 日韩一级黄色大片 | 天天干夜夜干 | 久久新网址| 日韩黄大片 | 久久亚洲一区二区三区四区五区 | 全程偷拍露脸中年夫妇 | 国产真人做爰毛片视频直播 | 男女在楼梯上高潮做啪啪 | 色呦呦免费视频 | 欧美日韩在线免费 | 黄色aa大片 | 欧美三日本三级少妇99 |