我有一个带有多个命名空间的xml。 我想迭代其中namespace ='http://ns.example.com/xmto/'
的元素我正在使用带有ElementTree的Python 3.4
此代码显示了element1:
tree.findall("{http://ns.example.com/xpto/}element1")
我想找到具有此命名空间的所有元素。 类似的东西:
tree.findall("{http://ns.example.com/xpto/}:*")
有可能吗? 或者唯一的方法是检查每个元素上的element.tag?
答案 0 :(得分:1)
如果你使用lxml.etree
,你可以使用XPath的namespace-uri()函数,如下所示:
elements = tree.xpath('//*[namespace-uri() = "http://ns.example.com/xpto/"]')
不幸的是,xml.etree
中的XPath支持不支持namespace-uri
功能。可能其他人会使用与本机xml模块一起使用的解决方案,但我喜欢使用xpath支持lxml
。