XML教學 | XML 和 XPath
Xpath
是什麼?
XPath
即為XML
路徑語言(XML Path Language
),它是一種用來確定XML
檔中某部分位置的電腦語言。XPath
基於XML
的樹狀結構,提供在資料結構樹中找尋節點的能力。
起初XPath
的提出的初衷是將其作為一個通用的、介於XPointer
與XSL
間的語法模型。但是XPath
很快的被開發者採用來當作小型查詢語言。
註:圖片截取於w3schools - XML and XPath
XPath
是一種用於定義XML
檔的各個部分位置的語法。XPath
使用路徑表達式在XML
檔中導航。XPath
包含一個標準函數庫。XPath
是XSLT
和XQuery
中的主要元素。XPath
是W3C
推薦的。
XPath
路徑表達式
XPath
使用路徑表達式來選擇XML
文檔中的節點或節點集。這些路徑表達式看起來非常像在使用傳統計算機文件系統時看到的表達式。XPath
表達式可用於JavaScript
、Java
、XML Schema
、PHP
、Python
、C
和C++
以及許多其他語言。
XML XPath
範例
1 |
|
這邊列出了一些簡單XPath
表達式和表達式的結果:
XPath 表達式 | 結果 |
---|---|
/bookstore/book[1] | 選擇作為 bookstore 元素的子元素的第一個 book 元素 |
/bookstore/book[last()] | 選擇作為 bookstore 元素的子元素的最後一個 book 元素 |
/bookstore/book[last()-1] | 選擇作為 bookstore 元素的子元素倒數第二個 book 元素 |
/bookstore/book[position()<3] | 選擇作為 bookstore 元素子元素的最前兩個 book 元素 |
//title[@lang] | 選擇所有具有名為 lang 的屬性的標題元素 |
//title[@lang=’en’] | 選擇所有具有值為“en”的“lang”屬性的標題元素 |
/bookstore/book[price>35.00] | 選擇 bookstore 元素中 price 元素的值大於 35.00 的所有 book 元素 |
/bookstore/book[price>35.00]/title | 選擇 bookstore 元素的 book 元素的所有 title 元素,其中 price 元素的值大於 35.00 |
HTML XPath
範例
由於以上是一個XML
檔的範例,如果要在瀏覽器內操作示範,會需要使用XMLHttpRequest
…等等之類的;
但是沒有使用XPath
做一些操作示範,感覺無法了解XPath
到底是什麼?
於下方加碼,對HTML
使用XPath
去做搜尋的操作,並且能在瀏覽器上簡單動手做:
- 首先建立一個
test.html
並輸入下方HTML
做儲存。 - 使用瀏覽器開啟
test.html
檔。 - 開啟「開發人員工具」,並選擇「Elements」。
- 按下
Ctrl
+F
,開啟搜尋功能。 - 可以看到在輸入欄位內有提示
Find by string, selector, or XPath
,他是可以接受字串、選擇器或XPath
。 - 輸入
//*[@id="divone"]
,就可以看到他將<div class='container' id='divone'>
反黃。1
2
3
4
5
6
7
8
9<html>
<body>
<a>link</a>
<div class='container' id='divone'>
<p class='common' id='enclosedone'>Element One</p>
<p class='common' id='enclosedtwo'>Element Two</p>
</div>
</body>
</html>
註:這邊做簡單示範,讓其對
XPath
有初步的了解,這邊並不會深入的語法教學。
執行效果:
結語
此章節「簡單」介紹了XPath
,使用簡單範例其訪問與操作。XPath
又是一門語言,先有初步了解。後面會按部就班的慢慢學習XML
的相關技術。
註:以上參考了
w3resource.com - XML and XPath
【爬蟲必備基礎】⭐通宵爆肝兩萬字xpath教學⭐學不會找我!
維基百科-XML
維基百科-XPath
Family with 220 icons by inipagi