はじめに
XMLは、データを階層的な構造で表現するためのマークアップ言語です。Pythonには、XMLを扱うための標準ライブラリとしてxml.etree.ElementTreeモジュールが用意されています。このモジュールを使うことで、XMLファイルを作成することができます。
XML Declarationとは
XMLファイルの先頭には、XML Declarationと呼ばれる特別なタグを記述することがあります。XML Declarationは、XMLのバージョンやエンコーディングを指定するために使用されます。例えば、以下のように記述します。
<?xml version="1.0" encoding="UTF-8" ?>
Pythonのxml.etree.ElementTreeモジュールでは、XML Declarationを出力するかどうかを指定することができます。デフォルトでは、XML Declarationが出力されます。
XMLファイルを作成する
xml.etree.ElementTreeモジュールを使ってXMLファイルを作成するには、以下の手順を実行します。
- xml.etree.ElementTree.Element()関数を使って、XML要素のルートを作成する。
- xml.etree.ElementTree.SubElement()関数を使って、ルート要素の子要素を作成する。
- xml.etree.ElementTree.ElementTree()関数を使って、要素のツリーを作成する。
- 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)
まとめ
Pythonのxml.etree.ElementTreeモジュールを使って、XMLファイルを作成する方法について解説しました。また、XML Declarationを出力するかどうか、およびエンコーディングを変更する方法についても説明しました。XMLファイルの作成には、これらの機能を組み合わせることで、柔軟に対応することができます。