假设将以下XML加载到data
(并且仅加载此数据):
<stream:stream to='host.com' xmlns='jabber:client' xmlns:stream='http://etherx.jabber.org/streams' version='1.0'>
我认为以下代码可以完成这项工作:
from lxml import etree as ET
from io import StringIO
parser = ET.XMLParser(recover=True)
e = ET.parse(StringIO(data), parser)
root = e.getroot()
for key, val in root.items():
print(key, val)
输出只是:
to host.com
version 1.0
如何访问xmlns='jabber:client'
更重要的是为什么这不是结果的一部分?
我从来都不喜欢XML,而外部命名空间定义的全部内容都不符合我的喜好,所以我已经避免了一点,也许我在这里缺少一些基础知识?
答案 0 :(得分:0)
您可以通过查看.nsmap
的{{1}}属性来查看节点的命名空间。