PythonでXMLを整形表示する方法
Python
でXMLを見やすく整形表示(Pretty Print)するには、いくつかの方法があります。最も一般的なのは、標準ライブラリのxml.dom.minidom
や外部ライブラリのlxml
を使用する方法です。
minidom
を使った整形表示
Python
標準のminidom
を使う方法です。minidom
はtoprettyxml()
メソッドを使って簡単に整形表示ができます。
使用例
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以降ならElementTree
のindent()
が便利です。