PythonでXMLファイルを作成する方法とXML Declarationの設定

はじめに

XMLは、データを階層的な構造で表現するためのマークアップ言語です。Pythonには、XMLを扱うための標準ライブラリとしてxml.etree.ElementTreeモジュールが用意されています。このモジュールを使うことで、XMLファイルを作成することができます。

XML Declarationとは

XMLファイルの先頭には、XML Declarationと呼ばれる特別なタグを記述することがあります。XML Declarationは、XMLのバージョンやエンコーディングを指定するために使用されます。例えば、以下のように記述します。

<?xml version="1.0" encoding="UTF-8" ?>

Pythonxml.etree.ElementTreeモジュールでは、XML Declarationを出力するかどうかを指定することができます。デフォルトでは、XML Declarationが出力されます。

XMLファイルを作成する

xml.etree.ElementTreeモジュールを使ってXMLファイルを作成するには、以下の手順を実行します。

  1. xml.etree.ElementTree.Element()関数を使って、XML要素のルートを作成する。
  2. xml.etree.ElementTree.SubElement()関数を使って、ルート要素の子要素を作成する。
  3. xml.etree.ElementTree.ElementTree()関数を使って、要素のツリーを作成する。
  4. xml.etree.ElementTree.ElementTree.write()メソッドを使って、XMLファイルを作成する。 以下は、XML要素を作成してXMLファイルに書き出す例です。
import xml.etree.ElementTree as ET

# ルート要素を作成する
root = ET.Element('root')

# 子要素を作成する
child = ET.SubElement(root, 'child')
child.text = 'Hello, World!'

# 要素のツリーを作成する
tree = ET.ElementTree(root)

# XMLファイルを作成する
tree.write('example.xml', xml_declaration=True)

上記の例では、Element()関数を使ってroot要素を作成し、SubElement()関数を使ってroot要素の子要素childを作成しています。child要素には、text属性に文字列'Hello, World!'を設定しています。

次に、ElementTree()関数を使って、root要素をルートとする要素のツリーを作成します。最後に、ElementTree.write()メソッドを使って、XMLファイル'example.xml'を作成しています。xml_declarationパラメータにTrueを設定することで、XML Declarationが出力されます。

XML Declarationのエンコーディングを変更する

XML Declarationには、エンコーディングを指定するencoding属性があります。デフォルトでは、xml.etree.ElementTreeモジュールではutf-8が指定されますが、cp932というエンコーディングが指定される場合があります。

xml.etree.ElementTreeモジュールでXML Declarationのエンコーディングを変更するには、以下のようにxml.etree.ElementTree.Element()関数にencodingパラメータを指定します。

import xml.etree.ElementTree as ET

# ルート要素を作成する
root = ET.Element('root')

# 子要素を作成する
child = ET.SubElement(root, 'child')
child.text = 'Hello, World!'

# 要素のツリーを作成する
tree = ET.ElementTree(root)

# XMLファイルを作成する(encodingを指定する)
tree.write('example.xml', encoding='utf-8', xml_declaration=True)

上記の例では、ElementTree.write()メソッドにencoding='utf-8'を指定することで、XML DeclarationのエンコーディングUTF-8に変更しています。

また、Python 3以降では、文字列のデフォルトエンコーディングUTF-8になっています。したがって、以下のようにxml_declarationパラメータにTrueを指定してwrite()メソッドを呼び出すだけでも、XML Declarationが出力され、エンコーディングUTF-8になります。

import xml.etree.ElementTree as ET

# ルート要素を作成する
root = ET.Element('root')

# 子要素を作成する
child = ET.SubElement(root, 'child')
child.text = 'Hello, World!'

# 要素のツリーを作成する
tree = ET.ElementTree(root)

# XMLファイルを作成する(xml_declarationを指定する)
tree.write('example.xml', xml_declaration=True)

まとめ

Pythonxml.etree.ElementTreeモジュールを使って、XMLファイルを作成する方法について解説しました。また、XML Declarationを出力するかどうか、およびエンコーディングを変更する方法についても説明しました。XMLファイルの作成には、これらの機能を組み合わせることで、柔軟に対応することができます。