Pythonは、XMLドキュメントをパースするための2つのモジュール、すなわちxml.etree.ElementTreeモジュールとMinidom(Minimal DOM Implementation)を提供しています。パースとは、特定のXMLファイルの部分を識別してファイルから情報を読み取ることを意味します。
XMLパーサーの選択
Pythonでは、言語に依存しないいくつかの戦略を使用してXMLドキュメントを処理することができます。それぞれが異なるメモリと速度のトレードオフを示し、これはPythonで利用可能なXMLパーサーの広範な範囲を部分的に正当化することができます。
Document Object Model (DOM)
歴史的に、最初で最も広範にわたって使用されているXMLのパースモデルは、World Wide Web Consortium (W3C)によって最初に定義されたDOM(Document Object Model)です。WebブラウザはJavaScriptを通じてDOMインターフェースを公開し、あなたがウェブサイトのHTMLコードを操作できるようにします。XMLとHTMLは同じマークアップ言語の家族に属しているため、DOMを使用してXMLをパースすることが可能です。
Pythonの標準ライブラリにあるXMLパーサーの使用
Pythonの標準ライブラリには、いくつかのXMLパーサーが含まれています。これらのパーサーを使用することで、XMLドキュメントを効率的にパースすることができます。
xml.dom.minidom: Minimal DOM Implementation
xml.dom.minidomは、PythonでDOMを実装するための最小限のツールを提供します。
xml.sax: The SAX Interface for Python
xml.saxは、PythonでSAX(Simple API for XML)インターフェースを提供します。
xml.dom.pulldom: Streaming Pull Parser
xml.dom.pulldomは、Pythonでストリーミングプルパーサーを提供します。
xml.etree.ElementTree: A Lightweight, Pythonic Alternative
xml.etree.ElementTreeは、Python風の軽量な代替手段を提供します。
サードパーティのXMLパーサーライブラリの探索
Pythonコミュニティは、さらに多くのXMLパーサーライブラリを作成することでこの余剰問題を解決しました。冗談はさておき、すべてのXMLパーサーは、小さな課題や大きな課題が満ちている世界で役立ちます。
untangle: Convert XML to a Python Object
untangleは、XMLをPythonオブジェクトに変換します。
xmltodict: Convert XML to a Python Dictionary
xmltodictは、XMLをPythonの辞書に変換します。
lxml: Use ElementTree on Steroids
lxmlは、ステロイドを使用したElementTreeを使用します。
BeautifulSoup: Deal With Malformed XML
BeautifulSoupは、形式が壊れたXMLを扱います。
XMLデータをPythonオブジェクトにバインドする
XPath式でモデルを定義したり、XMLスキーマからモデルを生成したりすることで、XMLデータをPythonオブジェクトにバインドすることができます。
セキュアパーサーでXMLボムを解除する
セキュリティの脆弱性を排除するために、安全なXMLパーサーを使用することができます。
以上がPythonでXMLをパースするための基本的なガイドラインです。これらの情報を元に、PythonでXMLを効率的にパースするための最適なパーサーを選択することができます。