XPath 是一門在 XML 文檔中查找信息的語言,對(duì) XPath 的理解是很多高級(jí) XML 應(yīng)用的基礎(chǔ),XPath 在 XML 中通過元素和屬性進(jìn)行導(dǎo)航。
創(chuàng)新互聯(lián)建站10多年企業(yè)網(wǎng)站設(shè)計(jì)服務(wù);為您提供網(wǎng)站建設(shè),網(wǎng)站制作,網(wǎng)頁設(shè)計(jì)及高端網(wǎng)站定制服務(wù),企業(yè)網(wǎng)站設(shè)計(jì)及推廣,對(duì)地磅秤等多個(gè)行業(yè)擁有豐富的網(wǎng)站推廣經(jīng)驗(yàn)的網(wǎng)站建設(shè)公司。什么是 lxml ?lxml 是一個(gè)用來處理 XML 的第三方 Python 庫,它在底層封裝了用 C 語言編寫的 libxml2 和 libxslt,并以簡單強(qiáng)大的 Python API,兼容并加強(qiáng)了著名的 ElementTree API。
XPath 術(shù)語在 XPath 語境中,XML 文檔被視作節(jié)點(diǎn)樹,節(jié)點(diǎn)樹的根節(jié)點(diǎn)也被稱作文檔節(jié)點(diǎn)。
XPath 將節(jié)點(diǎn)樹中的節(jié)點(diǎn)(Node)分為七類:元素(Element),屬性(Attribute),文本(Text),命名空間(Namespace),處理指令(Processing-instruction),注釋(Comment)和文檔節(jié)點(diǎn)(Document nodes)。
請(qǐng)看一下 XML 文檔:
Harry PotterJ K. Rowling
2005 29.99
以上 XML 文檔中:
(這是一個(gè)“根”)
J K. Rowling (這是一個(gè)“元素”)
lang="en" (這是一個(gè)“屬性”)
換個(gè)視角理解它:
- bookstore (我是根)
- book (我是元素)
- title (我是元素)
- attributes (我是屬性)
- lang = en (樓上其實(shí)是屬性容器,我才是屬性)
- text = Harry Potter (我是文本)
- author (我是元素)
- text = J K. Rowling (我是文本)
- year (我是元素)
- text = 2005 (我是文本)
- price (我是元素)
- text = 29.99 (我是文本)
以上就是節(jié)點(diǎn)樹的示意圖,看起來是不是很像 YAML 格式,每一行都表示一個(gè)節(jié)點(diǎn),縮進(jìn)表示各行之間的關(guān)系。其中無父或無子的節(jié)點(diǎn)被稱為原子值(Atomic value)也稱基本值,以上等號(hào)后面的都是原子值。節(jié)點(diǎn)和基本值都統(tǒng)稱為項(xiàng)目(Item)。
節(jié)點(diǎn)之間的關(guān)系 父(Parent)每個(gè)元素都肯定有一個(gè)父節(jié)點(diǎn),最頂層的元素父親是根節(jié)點(diǎn)。同理每個(gè)屬性必然有一個(gè)父,它們的父是元素。
上文 XML 文檔中,根 bookstore 是元素 book 的父節(jié)點(diǎn),book 是元素 title, author, year, price 的父節(jié)點(diǎn),title 是 lang 的父節(jié)點(diǎn)。
子(Children)元素可以有零或多個(gè)子。
上文 XML 文檔中,title, author, year, price 是 book 的子節(jié)點(diǎn)。
同胞(Sibling)父節(jié)點(diǎn)相同的節(jié)點(diǎn)之間互為同胞,也稱彼此的兄弟節(jié)點(diǎn)。
上文 XML 文檔中,title, author, year, price 彼此互為同胞。
先輩(Ancestor)某節(jié)點(diǎn)的父節(jié)點(diǎn)、父的父,以此類推一直追溯至根節(jié)點(diǎn)之間所有節(jié)點(diǎn)。
上文 XML 文檔中,title, author, year, price 的先輩就是 book, bookstore。
后代(Descendant)某節(jié)點(diǎn)的子節(jié)點(diǎn)、子的子,以此類推至最后一個(gè)子節(jié)點(diǎn)之間所有節(jié)點(diǎn)。
上文 XML 文檔中,bookstore 的后代就是 title, author, year, price 。