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ドキュメントが作成されていることが確認できました。
コメント