XML解析

untangle

untangle は、XML文書を受け取り、構造内のノードと属性を反映するPythonオブジェクトを返す単純なライブラリです。

たとえば、次のようなXMLファイルがあります:

<?xml version="1.0"?>
<root>
    <child name="child1">
</root>

次のようにロードすることができます:

import untangle
obj = untangle.parse('path/to/file.xml')

そして次のように子要素の名前を取得できます:

obj.root.child['name']

untangleは、文字列またはURLからXMLを読み込むこともサポートしています。

xmltodict

xmltodict は、XMLをJSONのように扱えるようにするためのもう一つの単純なライブラリです。

次のようなXMLファイル:

<mydocument has="an attribute">
  <and>
    <many>elements</many>
    <many>more elements</many>
  </and>
  <plus a="complex">
    element as well
  </plus>
</mydocument>

次のようにPython辞書にロードすることができます:

import xmltodict

with open('path/to/file.xml') as fd:
    doc = xmltodict.parse(fd.read())

次に、次のように要素、属性、および値にアクセスできます:

doc['mydocument']['@has'] # == u'an attribute'
doc['mydocument']['and']['many'] # == [u'elements', u'more elements']
doc['mydocument']['plus']['@a'] # == u'complex'
doc['mydocument']['plus']['#text'] # == u'element as well'

xmltodictは、未解析関数を使用してXMLへのラウンドトリップを可能にし、メモリに収まらないファイルを処理するのに適したストリーミングモードを持ち、名前空間をサポートします。