PythonでXMLファイルを作成する際、改行やインデントをコントロールする方法について説明します。

xml.etree.ElementTreeモジュール

Pythonのxml.etree.ElementTreeモジュールを使用してXMLドキュメントを作成すると、改行やインデントのコントロールができません。しかし、書き出し時にxml.dom.minidomモジュールを介すことで、これらをコントロールすることが可能です。

以下に、xml.etree.ElementTreexml.dom.minidomを使用してXMLファイルを作成し、改行とインデントを設定してファイルに書き出す例を示します。

import xml.etree.ElementTree as ET
import xml.dom.minidom as md

xmlRoot = ET.Element('root')  # ElementTreeでXMLを作成

# 文字列パースを介してminidomへ移す
document = md.parseString(ET.tostring(xmlRoot, 'utf-8'))

file = open('test.xml', 'w')  # エンコーディング、改行、全体のインデント、子要素の追加インデントを設定しつつファイルへ書き出し
document.writexml(file, encoding='utf-8', newl='\n', indent='', addindent='  ')
file.close()

このコードは、ElementTreeでXMLを作成し、その後minidomを使用して改行とインデントを設定しています。

Python3.9以降の新機能

Python3.9からは、ElementTreeindent関数が追加され、XMLの整形がより簡単になりました。以下にその使用例を示します。

import xml.etree.ElementTree as ET

tree = ET.parse('input.xml')
ET.indent(tree, space=' ')
tree.write('output.xml', encoding='UTF-8', xml_declaration=True)

このコードは、ET.indent関数を使用してXMLの全体的なインデントを設定し、その結果をファイルに書き出しています。

以上、PythonでXMLファイルを改行とインデント付きで書き出す方法について説明しました。これらの方法を活用して、PythonでのXMLファイルの操作をより効率的に行いましょう。

投稿者 admin

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です