我想爲具有名稱空間但沒有前綴的元素執行iterfind()
。我想打電話Python lxml iterfind w /名稱空間但前綴=無
iterfind([tagname])
或iterfind([tagname], [namespace dict])
我不小心輸入標籤每次如下:
"{%s}tagname" % tree.nsmap[None]
詳細
我運行來自Google API的xml響應。根節點定義了幾個名稱空間,其中包括沒有前綴的名稱空間:xmlns="http://www.w3.org/2005/Atom"
看起來好像當我試圖通過我的etree進行搜索時,所有行爲都像我期望的帶有前綴的元素一樣。例如: -
>>> for x in root.iterfind('dxp:segment'): print x
...
<Element {http://schemas.google.com/analytics/2009}segment at 0x1211b98>
<Element {http://schemas.google.com/analytics/2009}segment at 0x1211d78>
<Element {http://schemas.google.com/analytics/2009}segment at 0x1211a08>
>>>
但是,當我試圖尋找的東西沒有前綴,搜索不會自動添加相應的命名空間root.nsmap[None]
。例如: -
>>> for x in root.iterfind('entry'): print x
...
>>>
即使我試着投命名空間地圖中的可選參數爲iterfind
,它不會附加命名空間。
謝謝,但問題不是我不知道如何獲得匹配標籤的元素。問題是我只想輸入沒有命名空間的標籤,只提供命名空間表,讓魔術在後臺發生(如果有前綴涉及的話)。 – JellicleCat
@JellicleCat:更新了我的答案,希望它有幫助。 – Steven