PythonでXMLを整形表示する方法

PythonでXMLを見やすく整形表示(Pretty Print)するには、いくつかの方法があります。最も一般的なのは、標準ライブラリのxml.dom.minidomや外部ライブラリのlxmlを使用する方法です。

minidomを使った整形表示

Python標準のminidomを使う方法です。minidomtoprettyxml()メソッドを使って簡単に整形表示ができます。

使用例

import xml.dom.minidom as minidom
xml_str = """<root><child>text</child></root>"""
dom = minidom.parseString(xml_str)
pretty_xml = dom.toprettyxml()
print(pretty_xml)

この方法は外部ライブラリに依存せずに使えるメリットがありますが、不要な空白や改行が含まれる場合があります。

lxmlを使った整形表示

lxmlライブラリを使うと、よりパフォーマンスが高く、きれいな整形表示が可能です。lxml.etreeモジュールのtostring(pretty_print=True)を使用します。

使用例

from lxml import etree
root = etree.fromstring("<root><child>text</child></root>")
pretty_xml = etree.tostring(root, pretty_print=True, encoding="unicode")
print(pretty_xml)

lxmlは外部ライブラリのため、インストールが必要ですが、多機能である点が魅力です。

Python 3.9以降のElementTreeでの整形表示

Python 3.9から、xml.etree.ElementTreeモジュールにindent()メソッドが追加されました。これにより、外部ライブラリを使わずに簡単に整形表示ができます。

使用例

import xml.etree.ElementTree as ET
element = ET.XML("<root><child>text</child></root>")
ET.indent(element)
print(ET.tostring(element, encoding='unicode'))

結論

  • 標準ライブラリで手軽に使うならminidom
  • 柔軟で効率的に整形表示するならlxml
  • Python 3.9以降ならElementTreeindent()が便利です。