2017-09-01 3 views
0

xmlに複数の名前空間がある。 は、私はどこの名前空間=「http://ns.example.com/xmto/」要素を反復処理したい名前空間内のすべての要素を見つける

私はElementTreeの

このコードではPython 3.4を使用してい要素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

関連する問題