如何访问 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
属性 查看节点的命名空间。
假设将以下 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
属性 查看节点的命名空间。