使用 LXML 解析获取 XML 文件的节点属性

getting the node attribute of an XML file with LXML parsing

我无法解决这个问题,也无法正常工作:

data='''<?xml version="1.0" encoding="UTF-8"?>\n<div type="docs" xml:base="/kime-api/prod/api/emi/2" xml:lang="ja" xml:id="39532e30"> <div n="0001" type="doc" xml:id="_5738d00002"></div></div>'''

parser = etree.XMLParser(resolve_entities=False, strip_cdata=False, recover=True, ns_clean=True)
 
# I tried with and without this following line
#data = data.replace('<?xml version="1.0" encoding="UTF-8"?>','')

XML_tree = etree.fromstring(data.encode() , parser=parser)
lang = XML_tree.xpath('.//div[@xml:lang]')
lang

lang 是一个空列表,并且有一个元素,例如:XML.

中的 xml:lang="ja"

请问我做错了什么?

XML_tree 表示根元素(具有 xml:lang 属性的 <div>)。

如果要获取语言,请使用以下命令:

lang = XML_tree.xpath('@xml:lang')

你可以 xpath(@xml:lang).

XML_tree = etree.fromstring(data.encode() , parser=parser)
lang = XML_tree.xpath('@xml:lang')
print(lang)
Output:

['ja']