Pythonのxml.etree.ElementTree
モジュールは、XMLデータの解析と作成のためのシンプルで効率的なAPIを実装しています。このモジュールは、利用可能な場合は高速な実装を使用します。
XMLツリーと要素
XMLは本質的に階層的なデータ形式であり、それを表現する最も自然な方法はツリーです。ElementTreeにはこの目的のための2つのクラスがあります。ElementTree
はXMLドキュメント全体をツリーとして表現し、Element
はこのツリーの単一のノードを表現します。
XMLの解析
以下のXMLドキュメントをこのセクションのサンプルデータとして使用します。
<?xml version="1.0"?>
<data>
<country name="Liechtenstein">
<rank>1</rank>
<year>2008</year>
<gdppc>141100</gdppc>
<neighbor name="Austria" direction="E"/>
<neighbor name="Switzerland" direction="W"/>
</country>
<country name="Singapore">
<rank>4</rank>
<year>2011</year>
<gdppc>59900</gdppc>
<neighbor name="Malaysia" direction="N"/>
</country>
<country name="Panama">
<rank>68</rank>
<year>2011</year>
<gdppc>13600</gdppc>
<neighbor name="Costa Rica" direction="W"/>
<neighbor name="Colombia" direction="E"/>
</country>
</data>
このデータをファイルからインポートすることができます。
import xml.etree.ElementTree as ET
tree = ET.parse('country_data.xml')
root = tree.getroot()
または、直接文字列からインポートすることもできます。
root = ET.fromstring(country_data_as_string)
fromstring()
はXMLを直接文字列からElement
に解析します。これは解析されたツリーのルート要素です。他の解析関数はElementTree
を作成するかもしれません。
XPathの利用
XPathはXMLドキュメント内の要素や属性を選択するための言語です。Pythonのxml.etree.ElementTree
モジュールは、XPathの一部の機能をサポートしています。しかし、完全なXPathのサポートは提供していません。
例えば、次のようにXPathを使用して特定の要素を選択することができます。
from elementtree.ElementTree import ElementTree
mydoc = ElementTree(file='tst.xml')
for e in mydoc.findall('/foo/bar'):
print(e.get('title').text)
この記事はPythonのxml.etree.ElementTree
モジュールとXPathを使用したXML解析の基本的な概念と使用方法について説明しました。これらの知識を活用して、PythonでXMLデータの解析と操作を行うことができます。