查找名称空间内的所有元素
问题描述:
我有一个带有多个名称空间的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
。
谢谢,我将使用lxml,而我找不到原生解决方案。 – ricardo