2017-09-01 81 views
0

我有一個帶有多個名稱空間的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?

回答

1

如果你使用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

相關問題