旧それなりブログの跡地、画像やスタイルやJSなどが壊れてることがあります。

[Python] ElementTreeモジュールの使い方

2012年12月28日

xml.etree.ElementTree の使い方まとめです
検証環境は 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では以下のエラーになる

xml.etree.ElementTree.ParseError: not well-formed (invalid token)

・・・そりゃ無理だよね、って気はしてます

参考リンク