Pythonを使用しXMLドキュメントを作成する

Pythonを使用しXMLドキュメントを作成してみます。

Extensible Markup Language(エクステンシブル マークアップ ランゲージ)(XML)は、基本的な構文規則を共通とすることで、独自のタグの作成などに使うことのできるマークアップ言語です。​XMLはプラットフォームやプログラミング言語に依存しません。​また、Webページの基盤となるHTMLの制限を克服するために、World Wide Web Consortium (W 3C) によって作成されています。

■Python

今回のPythonのバージョンは、「3.8.5」を使用しています。(Windows10)(pythonランチャーでの確認)

■minidomモジュールを使用し、XMLドキュメントを作成する

PythonでXMLドキュメントを作成するためには、minidomモジュールが必要となります。minidomモジュールはPythonの標準ライブラリですので、事前にインストールする必要はありません。

では早速、minidomモジュールを使用し、XMLドキュメントを作成するスクリプトを書いていきます。

■コード

from xml.dom import minidom
import os

root = minidom.Document()

#新たな要素ノードを生成
xml = root.createElement('root')

#新たな子ノードを追加
root.appendChild(xml)

#新たな要素ノードを生成
productChild = root.createElement('product')

#属性の属性値を変更
productChild.setAttribute('name','Test')

#新たな子ノードを追加
xml.appendChild(productChild)

#整形、出力
xml_str = root.toprettyxml(indent = "\t")

#パス、ファイル名
save_path_file = "test.xml"

#ファイルの読み書き
with open(save_path_file, "w") as f:
    f.write(xml_str)

インポートでminidomモジュールのxml.domを呼び出して、rootという変数を作成し、minidom.Document()を格納します。次にxmlという変数を作成し、createElement()で新たな要素ノードを生成します。生成後、appendChild()で子ノードを追加します。追加後、productChildという変数を作成し、productという新たな要素ノードを生成します。生成した新たな要素ノードの属性の属性値を”name”,”test”と変更します。

変更後、appendChild()で新たな子ノードを追加します。追加後、toprettyxml()で括弧内にindent(インデント)と記述し、「\t(水平タブ)」でXMLドキュメントを整形します。

整形後、save_path_fileという変数を作成し、ファイルを保存する場所、名前を指定します。

指定後、with構文を使ってファイルに書き込みを行い保存します。

■実行

今回書いたスクリプトを「create_xmldocument.py」という名前で保存し、コマンドプロンプトから実行してみます。

実行してみると、カレントディレクトリ(作業ディレクトリ)に、test.xmlというXMLドキュメントが作成されていることが確認できました。

■xml.etree.ElementTreeモジュールを使用し、XMLドキュメントを作成する

次に、xml.etree.ElementTreeモジュールを使用し、XMLドキュメントを作成する方法を解説します。xml.etree.ElementTreeモジュールは、Pythonの標準ライブラリですので、事前にインストールする必要はありません。

では、早速xml.etree.ElementTreeモジュールを使用し、XMLドキュメントを作成するスクリプトを書いていきます。

■コード

import xml.etree.ElementTree as gfg

#関数の定義
def XMLGenerator(fileName):
    #要素を追加
    root = gfg.Element("Japan")
    #要素を追加
    a1 = gfg.Element("Osaka")
    #要素の子要素の内部リストの末尾に追加
    root.append(a1)
    #子要素を追加
    b1 = gfg.SubElement(a1, "Address1")
    b1.text = "umeda"
    #子要素を追加
    b2 = gfg.SubElement(a1, "Address1")
    b2.text = "Grand Front Osaka"
    #ElementTreeを追加
    tree = gfg.ElementTree(root)
    #ファイルの書き込み
    with open (fileName, "wb") as files :
        tree.write(files)
#コードを実行
if __name__ == "__main__":
    XMLGenerator("test2.xml")

xml.etree.ElementTreeを呼び出して、XMLGeneratorという関数の定義します。rootという変数を作成し、Element()で要素を追加します。さらにa1という変数を作成し、Element()で要素を追加します。追加後、rootという変数にappend()でa1を追加します。追加後、b1という変数を作成し、SubElement()でa1に子要素を追加します。さらにb2という変数を作成し、同じようにSubElement()でa1に子要素を追加します。追加後、treeという変数を作成し、rootにElementTreeを追加します。

追加後、with構文を使ってファイルに書き込みを行うようにプログラムします。

最後にif __name__ == “__main__”:で、コードを実行し、XMLドキュメントを生成します。

■実行

このスクリプトを「create_xmldocument_2.py」という名前で保存し、コマンドプロンプトから実行してみます。

実行してみると、カレントディレクトリ(作業ディレクトリ)に、test2.xmlというXMLドキュメントが作成されていることが確認できました。

コメント

タイトルとURLをコピーしました