Pythonには、XMLを処理するためのいくつかのモジュールがあります。その中でも、Pythonに組み込まれているExpatパーサーは、xml.parsers.expatモジュールとして利用可能です。
xml.etree.ElementTree
xml.etree.ElementTreeは、シンプルで軽量なXMLプロセッサです。このAPIを使用すると、XMLデータを解析し、その要素を操作することができます。
import xml.etree.ElementTree as ET
tree = ET.parse('your_file.xml')
root = tree.getroot()
xml.dom and xml.sax
xml.domとxml.saxパッケージは、DOMとSAXインターフェースのPythonバインディングの定義です。これらのパッケージを使用すると、XMLドキュメントを解析し、その内容を操作することができます。
from xml.dom import minidom
dom = minidom.parse('your_file.xml')
elements = dom.getElementsByTagName('item')
xml.parsers.expat
xml.parsers.expatモジュールは、Expat非検証XMLパーサーへのPythonインターフェースです。このモジュールは、XMLパーサーの現在の状態を表す単一の拡張型、xmlparserを提供します。
from xml.parsers import expat
def start_element(name, attrs):
print('Start element:', name, attrs)
def end_element(name):
print('End element:', name)
p = expat.ParserCreate()
p.StartElementHandler = start_element
p.EndElementHandler = end_element
p.Parse("""<?xml version="1.0"?><parent id="top"><child1 name="paul">Text goes here</child1><child2 name="fred">More text</child2></parent>""", 1)
これらのモジュールを使用することで、PythonでXMLを効率的に解析することが可能です。ただし、これらのモジュールは安全なXMLデータの解析を前提としています。信頼できない、または誤って構築されたデータを解析する際には、XMLの脆弱性を考慮する必要があります。