查找命名空间中的所有元素

时间:2017-09-01 22:06:12

标签: python xml-parsing

我有一个带有多个命名空间的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?

1 个答案:

答案 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