私はPythonのelemenTreeを使用してXMLファイルを解析しようとしています。Python ElementTreeがxmlファイルを正しく解析できません
<App xmlns="test attribute">
<name>sagar</name>
</App>
パーサコード: xmlファイルは、以下のようなものです
from xml.etree.ElementTree import ElementTree
from xml.etree.ElementTree import Element
import xml.etree.ElementTree as etree
def parser():
eleTree = etree.parse('app.xml')
eleRoot = eleTree.getroot()
print("Tag:"+str(eleRoot.tag)+"\nAttrib:"+str(eleRoot.attrib))
if __name__ == "__main__":
parser()
出力:
[[email protected] Parser]$ python test.py
Tag:{test attribute}App <------------- It should print only "App"
Attrib:{}
私は "のxmlns" 属性を削除するか、他の何かに "のxmlns" 属性の名前を変更するとeleRoot.tagが正しい値を出力しています。 タグに "xmlns"属性があると、要素ツリーがタグを正しく解析できないのはなぜですか?要素ツリーを使用してこの形式のXMLを解析するためのいくつかの前提条件がありませんか?
私はそれはタグがから来ている名前空間を定義しているので、 'xmlns'属性は、特別な処理を取得することを推測すると思います。 – Blckknght
@Blckknght私のコードを動作させるために必要な特別な処理は何ですか? – sagar
問題はあなたのコードではなく、XMLです。私がちょうど[ここ](http://effbot.org/zone/element-namespaces.htm#element-tree-representation)で見つけた小さな落とし穴は、要素に定義されているxml名前空間がある場合、それが修飾された名前は "{ namespace_url}タグ」を参照してください。したがって、あなたの例では、 "test属性"のデフォルト名前空間を定義しています。つまり、 'App'要素の完全修飾名は実際には" {test attribute} App "です。私はこの情報に対応するために私の答えを変更する予定です。 –