如何访问 xmlns 键,xml 字符串中的值

How to access xmlns key, val in xml string

假设将以下 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 并且外部命名空间定义的整个事情不是我喜欢的,所以我已经避免了很多,也许我在这里遗漏了一些基础知识?

您可以通过查看 root.nsmap 属性 查看节点的命名空间。