ElementTreeにXMLファイルの名前空間を無視するように指示するにはどうすればよいですか?Python:xml.etree.ElementTreeの名前空間を無視しますか?
たとえば、{http://maven.apache.org/POM/4.0.0}modelVersion
(ステートメント2のように)ではなく、modelVersion
(ステートメント1のように)を照会することをお勧めします。
pom="""
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
http://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
</project>
"""
from xml.etree import ElementTree
ElementTree.register_namespace("","http://maven.apache.org/POM/4.0.0")
root = ElementTree.fromstring(pom)
print 1,root.findall('modelVersion')
print 2,root.findall('{http://maven.apache.org/POM/4.0.0}modelVersion')
1 []
2 [<Element '{http://maven.apache.org/POM/4.0.0}modelVersion' at 0x1006bff10>]
AFAIK簡単な方法ではないo特に、複数の名前空間を扱う可能性がある場合は特にそうではありません。重複した質問があるように見えますが(http://stackoverflow.com/q/13412496/20670)、それらのアプローチがあなたのためには機能しないと言ったら、私はデュエルハマーを使わないでしょう私に汚れたハックのように見える)。 –
また、['lxml'は調べる価値があるかもしれません](http://stackoverflow.com/q/14853243/20670)、標準ライブラリの一部ではありません。 –
悲しいことに、私はlxmlをインストールできない人にこれを送っています。私は、標準の図書館がいつかそれを組み込むことを願っています。私は私がプロのプログラマーであることを私の母に話しました。 : -/ –