簡體   English   中英

如何使用 XPATH 獲取 XML 標記的文本

[英]How to get text of XML tag using XPATH

我這里有一個簡單的 xml 標簽,我只想獲取帶有"en"的屬性文本,我想根據屬性值獲取它,所以我通過 XPATH 來實現

<tu>
      <tuv xml:lang="de"><seg>Samp</seg></tuv>
      <tuv xml:lang="en"><seg>Python is cool!</seg></tuv>
</tu>

正如你所看到的, <tuv>標簽的屬性是xml:lang然后我在這里嘗試了這段代碼

print(body_xml.find("tu").find('./tuv[@xml:lang="en"]').find("seg").text)

但是它給了我這個錯誤

 raise SyntaxError("prefix %r not found in prefix map" % prefix) from None
SyntaxError: prefix 'xml' not found in prefix map

事情也是我試圖刪除xml:所以留下了"lang"然后我試着把它這樣print(body_xml.find("tu").find('./tuv[@lang="en"]').find("seg").text)並且成功了! 現在我只是想知道我認為問題是因為這個角色:所以有沒有辦法正式正確地做這件事? 我非常願意在這個偉大的社區中提出任何建議:) 感謝您幫助我的程序員!

調用find時需要使用命名空間

import xml.etree.ElementTree as ET

xml = '''<tu>
      <tuv xml:lang="de"><seg>Samp</seg></tuv>
      <tuv xml:lang="en"><seg>Python is cool!</seg></tuv>
</tu>'''

nsmap = {"xml": "http://www.w3.org/XML/1998/namespace"}
root = ET.fromstring(xml)
seg_txt = root.find('.//tuv[@xml:lang="en"]', nsmap).find('seg', nsmap).text
print(seg_txt)

輸出

Python is cool!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM