[Python] 我試圖在 XML 檔案的href任何級別檢索具有屬性的 XML 檔案中的任何元素。例如:
<OuterElement href='a.com'>
<InnerElement>
<NestedInner href='b.com' />
<NestedInner href='c.com' />
<NestedInner />
</InnerElement>
<InnerElement href='d.com'/>
</OuterElement>
將檢索以下元素(作為 lxml 元素物件,為了視覺清晰而簡化):
[<OuterElement href='a.com'>, <NestedInner href='b.com' />, <NestedInner href='c.com' />, <InnerElement href='d.com'/>]
我已經嘗試使用以下代碼來檢索帶有 href 標簽的任何元素,但它會在充滿具有 href 屬性的元素的檔案中檢索零個元素:
with(open(file, 'rb')) as f:
xml_tree = etree.parse(f)
href_elements = xml_tree.xpath(".//*[@href]")
這段代碼不應該選擇任何.//*具有指定屬性 ( [@href]) 的元素( ) 嗎?根據我的理解(如果我錯了,肯定會糾正我,我很可能是),href_elements應該是一個 lxml 元素物件的陣列,每個物件都有一個 href 屬性。
重要說明:我看到很多人在 Stack Overflow 上詢問 xpath,但我還沒有找到有關如何搜索xml 中的所有元素并檢索符合條件(例如 href)的每個元素的已解決問題。
uj5u.com熱心網友回復:
基于ElementTree
import xml.etree.ElementTree as ET
xml = '''<OuterElement href='a.com'>
<InnerElement>
<NestedInner href='b.com' />
<NestedInner href='c.com' />
<NestedInner />
</InnerElement>
<InnerElement href='d.com'/>
</OuterElement>'''
root = ET.fromstring(xml)
elements_with_href = [root] if 'href' in root.attrib else []
elements_with_href.extend(root.findall('.//*[@href]'))
for e in elements_with_href:
print(f'{e.tag} : {e.attrib["href"]}')
輸出
OuterElement : a.com
NestedInner : b.com
NestedInner : c.com
InnerElement : d.com
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/359586.html
上一篇:Python/BeautifulSoup-從Clinicaltrials.govAPI抓取XML資料-決議XML父/子標簽中的資料
