[Python] ElementTreeモジュールの使い方
2012年12月28日
xml.etree.ElementTree の使い方まとめです
検証環境は Python-2.7.3
検証環境は Python-2.7.3
XMLをパースする / 要素を抽出して操作する
主要メソッド:
- fromstring = XML文字列を解析してオブジェクトにして返す
- find = 要素を一つだけ抽出する
- findall = 要素を全て抽出する
find/findall には、XPath(っぽいだけ?)記法を使います
element.find('.//tag_name')
element.findall('./parent/child')
element.findall('.//*')
詳細は、こちらのサンプルコードを参照
名前空間付きの要素を抽出する
xmls属性や<soap:Body>などで名前空間が指定されている場合は
以下のように {} で名前空間を指定する必要があります
以下のように {} で名前空間を指定する必要があります
element.find('.//{xmls_value}tag_name')
element.find('.//{http://xxx.xxx/xxx/}tag_name')
詳細は、こちらのサンプルコードを参照
XML文字列を構造的に生成する
主要メソッド:
- Element = ルート要素を生成する
- SubElement = 要素を生成する
- remove = 要素を削除する
- tostring = 要素をXML文字列へ変換する
- xml.dom.minidom.parseString/toprettyxml = Pretty-Printするために必要
詳細は、こちらのサンプルコードを参照
未解決論点
XMLとして誤っている文字列を強制的にオブジェクトにしたい
fromstringでは以下のエラーになる
fromstringでは以下のエラーになる
xml.etree.ElementTree.ParseError: not well-formed (invalid token)
・・・そりゃ無理だよね、って気はしてます
参考リンク
- ElementTree XML API .. 日本語ElementTreeドキュメント
- Supported XPath syntax .. XPathの書式
- XML名前空間の簡単な説明 .. 名前空間の仕組みを知らなかったので