Python ElementTree で XML の改行を制御する方法

ElementTree とは

ElementTree は Python の標準ライブラリの一つで、XML データの解析や生成を行うためのシンプルかつ効率的なツールです。DOM や SAX と比べて、より Python らしい直感的な API を提供します。

改行の問題

ElementTree で XML を出力する際、デフォルトでは改行が適切に挿入されません。これにより、生成された XML ファイルが1行の長い文字列となってしまい、可読性が低下するという問題があります。

解決方法

Python 3.9 以降では、ElementTree.indent() メソッドを使用して XML を整形できます:

import xml.etree.ElementTree as ET

# XMLツリーの作成
root = ET.Element('root')
child = ET.SubElement(root, 'child')
child.text = 'Hello, World!'

# もっと簡単には、
# root = ET.fromstring("<?xml version='1.0' encoding='utf-8'?><root><child>Hello, World!</child></root>")
# のようにする方法もある。

# インデントの追加
ET.indent(root)

# 出力
tree = ET.ElementTree(root)
tree.write('output.xml', encoding='utf-8', xml_declaration=True)

参照

ベストプラクティス

  1. Python 3.9 以降を使用している場合は、ET.indent() を使用することを推奨します。これが最も簡単で標準的な方法です。

  2. XML宣言が必要な場合は、write() メソッドで xml_declaration=True を指定します:

tree.write('output.xml', encoding='utf-8', xml_declaration=True)
  1. エンコーディングは常に明示的に指定することをお勧めします(通常は UTF-8)。

まとめ

ElementTree は強力な XML 処理ツールですが、デフォルトでは改行が適切に挿入されません。しかし、上記の方法を使用することで、可読性の高い整形された XML を生成することができます。

1969年生まれ。大学卒業後から15年以上にわたり、通信、カードリーダ、セキュリティ業界においてソフトウェア開発に従事。その後、2012年5月に当社を設立。電力、交通、車載向けの組み込み系システム、旅行業界向けの WEB システム開発、音声合成システム、消防向けのシステム開発等に参画。
低コストかつシンプルで安定稼働するシステムの実現を目指し、アーキテクチャ設計に取り組んでいます。
会社情報と代表者守屋のプロフィール詳細