查找名称空间内的所有元素

查找名称空间内的所有元素

问题描述:

我有一个带有多个名称空间的xml。 我想遍历元素,其中命名空间=“http://ns.example.com/xmto/查找名称空间内的所有元素

我使用Python 3.4与ElementTree的

这个代码显示部件1:

tree.findall("{http://ns.example.com/xpto/}element1") 

我想找到这个命名空间的所有元素。 类似于:

tree.findall("{http://ns.example.com/xpto/}:*") 

这可能吗? 或者唯一的方法是检查每个元素上的element.tag?

如果你使用lxml.etree,您可以使用XPath的namespace-uri()功能,这样的事情:

elements = tree.xpath('//*[namespace-uri() = "http://ns.example.com/xpto/"]') 

不幸的是,在xml.etree的XPath支持不支持namespace-uri功能。可能有人会用本地xml模块工作的解决方案,但我喜欢使用xpath支持lxml

+0

谢谢,我将使用lxml,而我找不到原生解决方案。 – ricardo