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

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

[XPath] XPath 与 lxml (三)XPath 坐标轴

發(fā)布時間:2024/4/13 编程问答 47 豆豆
生活随笔 收集整理的這篇文章主要介紹了 [XPath] XPath 与 lxml (三)XPath 坐标轴 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

本章我們將沿用上一章的 XML 示例文檔。

?

XPath 坐標(biāo)軸

坐標(biāo)軸用于定義當(dāng)對當(dāng)前節(jié)點的節(jié)點集合。

坐標(biāo)軸名稱含義
ancestor選取當(dāng)前節(jié)點的所有先輩元素及根節(jié)點。
ancestor-or-self選取當(dāng)前節(jié)點的所有先輩以及當(dāng)前節(jié)點本身。
attibute選取當(dāng)前節(jié)點的所有屬性。
child選取當(dāng)前節(jié)點的所有子元素。
descendant選取當(dāng)前節(jié)點的所有后代元素。
descendant-or-self選取當(dāng)前節(jié)點的所有后代元素以及當(dāng)前節(jié)點本身。
following選取文檔中當(dāng)前節(jié)點的結(jié)束標(biāo)簽之后的所有節(jié)點。
following-sibling選取當(dāng)前節(jié)點之后的所有同級節(jié)點
namespace選取當(dāng)前節(jié)點的所有命名空間節(jié)點。
parent選取當(dāng)前節(jié)點的父節(jié)點。
preceding選取當(dāng)前節(jié)點的開始標(biāo)簽之前的所有節(jié)點。
preceding-sibling選取當(dāng)前節(jié)點之前的所有同級節(jié)點。
self選取當(dāng)前節(jié)點。

?

?

?

?

?

?

?

?

?

?

?

?

?

位置路徑表達(dá)式

位置路徑可以是絕對路徑,也可以是相對路徑。絕對路徑以 "/" 開頭。每條路徑包括一個或多個步,每步之間以 "/" 分隔。

?

絕對路徑:/step/step/...

相對路徑:step/step/...

?

每步根據(jù)當(dāng)前節(jié)點集合中的節(jié)點計算。

?

步(step)包括三部分:

  • 坐標(biāo)軸(axis):定義所選節(jié)點與當(dāng)前節(jié)點之間的關(guān)系。
  • 節(jié)點測試(node-test):識別某個坐標(biāo)軸內(nèi)部的節(jié)點。
  • 預(yù)判(predicate):提出預(yù)判條件對節(jié)點集合進行篩選。

步的語法:

坐標(biāo)軸::節(jié)點測試[預(yù)判]

?

實例

# child::nodename 選取所有屬于當(dāng)前節(jié)點的 book 子元素,等價于 './nodename' >>> root.xpath('child::book') [<Element book at 0x2d888c8>, <Element book at 0x2d88878>] >>> root.xpath('./book') [<Element book at 0x2d888c8>, <Element book at 0x2d88878>]# attribute::lang 選取當(dāng)前節(jié)點的 lang 屬性,等價于 './@lang' >>> root.xpath('//*[@lang]')[0].xpath('attribute::lang') ['eng'] >>> root.xpath('//*[@lang]')[0].xpath('@lang') ['eng']# child::* 選取當(dāng)前節(jié)點的所有子元素,等價于 './*' >>> root.xpath('child::*') [<Element book at 0x2d88878>, <Element book at 0x2d88738>] >>> root.xpath('./*') [<Element book at 0x2d88878>, <Element book at 0x2d88738>]# attribute::* 選取當(dāng)前節(jié)點的所有屬性,等價于 './@*' >>> root.xpath('//*[@*]')[0].xpath('attribute::*') ['eng'] >>> root.xpath('//*[@*]')[0].xpath('@*') ['eng']# child::text() 選取當(dāng)前節(jié)點的所有文本子節(jié)點,等價于 './text()' >>> root.xpath('child::text()') ['\n ', '\n ', '\n'] >>> root.xpath('./text()') ['\n ', '\n ', '\n']# child::node() 選取當(dāng)前節(jié)點所有子節(jié)點,等價于 './node()' >>> root.xpath('child::node()') ['\n ', <Element book at 0x2d88878>, '\n ', <Element book at 0x2d88738>, '\n'] >>> root.xpath('./node()') ['\n ', <Element book at 0x2d88878>, '\n ', <Element book at 0x2d88738>, '\n']# descendant::book 選取當(dāng)前節(jié)點所有 book 后代,等價于 './/book' >>> root.xpath('descendant::book') [<Element book at 0x2d88878>, <Element book at 0x2d88738>] >>> root.xpath('.//book') [<Element book at 0x2d88878>, <Element book at 0x2d88738>]# ancestor::book 選取當(dāng)前節(jié)點所有 book 先輩 >>> root.xpath('.//title')[0].xpath('ancestor::book') [<Element book at 0x2d88878>]# ancestor-or-self::book 選取當(dāng)前節(jié)點的所有 book 先輩以及如果當(dāng)前節(jié)點是 book 的話也要選取 >>> root.xpath('.//title')[0].xpath('ancestor-or-self::book') [<Element book at 0x2d88878>] >>> root.xpath('.//book')[0].xpath('ancestor-or-self::book') [<Element book at 0x2d88878>] >>> root.xpath('.//book')[0].xpath('ancestor::book') []# child::*/child::price 選取當(dāng)前節(jié)點的所有 price 孫節(jié)點,等價于 './*/price' >>> root.xpath('child::*/child::price') [<Element price at 0x2d88878>, <Element price at 0x2d88738>] >>> root.xpath('./*/price') [<Element price at 0x2d88878>, <Element price at 0x2d88738>] 超強干貨來襲 云風(fēng)專訪:近40年碼齡,通宵達(dá)旦的技術(shù)人生

總結(jié)

以上是生活随笔為你收集整理的[XPath] XPath 与 lxml (三)XPath 坐标轴的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。