xpath回顧溫習

1.絕對路徑定位

以斜線 / 開頭,/AAA/CCC/DDD;

2.相對路徑 //

以雙斜線 // 開頭, ?//BBB ?無論層級關系,定位所有BBB元素;

//DDD/BBB 所有父元素下是DDD下的BBB元素;

3.相對路徑 *

/AAA/CCC/DDD/*? 選擇所有/AAA/CCC/DDD/路徑下的所有元素;

/*/*/*/BBB ?選擇所有有3個祖先元素的BBB元素;

4.相對路徑 [ ]

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

/AAA/BBB[1]

/AAA/BBB[last()]

5.相對路徑 @

? 選擇所有的id屬性: //@id;?

選擇有id屬性的BBB元素: //BBB[@id];?

選擇有任意屬性的BBB元素: //BBB[@*];

選擇沒有屬性的BBB元素://BBB[not(@*)]

6.屬性的值定位

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

選擇含有某屬性且其值為‘b1’的BBB元素: //BBB[@id='b1']

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

注:有的屬性值前或后都會人為的添加空格,易讀性好

以下為函數介紹

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

選擇含有N個BBB子元素的元素://*[count(BBB)=N]

選擇含有2個子元素的元素://*[count(*)=2]

8.name(),start-with(m,n),contains(x,y)

選擇所有名稱為BBB的元素? //*[name()='BBB']等價于//BBB

start-with(m,n) 在該函數的m參數字符串是以n參數字符開始的情況返回true

選擇所有名稱以”B“起始的元素://*[starts-with(name(),'B')]

?contains(x,y)函數當其x字符串參數包含有y字符串參數時返回true.

選擇所有名稱包含”c“的元素://*[contains(name(),'C')]

9. string-length()

string-length函數返回字符串的字符數,你應該用&lt替代<, 用&gt代替>

選擇名稱長度為3的元素://*[string-length(name()) = 3]

10.多路徑分隔符 |

選擇所有的CCC和BBB元素 ://CCC | //BBB

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

可以合并的路徑數目沒有限制:/AAA/EEE | //DDD/CCC | /AAA | //BBB

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容