Pythonのxml.etree.ElementTree
モジュールは、XMLデータのパースと作成のためのシンプルで効率的なAPIを実装しています。このモジュールは、XMLが本質的に階層的なデータ形式であることを考慮に入れ、XMLを表現する最も自然な方法はツリーであると考えています。
ElementTreeには、この目的のための2つのクラスがあります:
– ElementTree
は、全体のXMLドキュメントをツリーとして表現します。
– Element
は、このツリーの単一のノードを表現します。
全体のドキュメントとのやり取り(ファイルからの読み書き)は通常、ElementTree
レベルで行われます。一方、単一のXML要素とそのサブ要素とのやり取りはElement
レベルで行われます。
以下に、XMLのパースの基本的な手順を示します:
import xml.etree.ElementTree as ET
# ファイルからパースする場合
tree = ET.parse('country_data.xml')
root = tree.getroot()
# 文字列からパースする場合
root = ET.fromstring(country_data_as_string)
fromstring()
関数は、文字列から直接Element
(パースされたツリーのルート要素)を生成します。他のパース関数はElementTree
を生成することもあります。
Element
は、タグと属性の辞書を持っています:
>>> root.tag
'data'
>>> root.attrib
{}
また、子ノードを持っており、これらの子ノードをイテレートすることができます:
>>> for child in root:
... print(child.tag, child.attrib)
...
country {'name': 'Liechtenstein'}
country {'name': 'Singapore'}
country {'name': 'Panama'}
子ノードはネストされており、インデックスを使用して特定の子ノードにアクセスすることができます:
>>> root[0][1].text
'2008'
以上が、Pythonのxml.etree.ElementTree
モジュールを使用してXMLをパースする基本的な方法です。詳細な情報や使用例については、公式ドキュメンテーションを参照してください。