lisz-works

技術と興味の集合体

Python3で日本語入XML作成方法まとめ

【スポンサーリンク】

Pythonロゴ

Python3でのXMLの作り方です。

日本語でXMLを扱うために「xml.dom.minidom」というライブラリを使用してみたので、使い方をまとめてみました!

インポート

こちらをインポートします。

import xml.dom.minidom

XML作成の流れ

  1. DOMオブジェクトを作成する
  2. ルート要素を追加する
  3. 小要素を追加していく

といった感じです。

ルート要素も小要素も、作成やどこかに追加するという処理で使用する関数は同じです。

「誰に」、「どれを追加するか」を、正しく作っていけばOK!

要素の追加のときに、属性やテキストを付与していきます。

DOMオブジェクトを作る

これだけ。

dom = xml.dom.minidom.Document()

この変数「dom」を使っていきます。

要素を作る

要素はこのようにして作ります。

elm = dom.createElement('ElementName')

要素を追加する

要素を追加するときに使用するのが

domObject.appendChild(elm)

となります。

「domObject」の部分は、

  • はじめに作成したDOMオブジェクト
  • dom.createElement()で作成したDOMオブジェクト

を指します。

ルート要素の追加

ルート要素は、先頭のDOMオブジェクトに追加するため

root= dom.createElement('Root')
dom.appendChild(root)

のようにします。

小要素の追加

小要素は、親要素にしたい要素に対して追加するため、例えば

root= dom.createElement('Root')
dom.appendChild(root)
elm1 = dom.createElement('Elm-1')
root.appendChild(elm1)
elm2 = dom.createElement('Elm-2')
root.appendChild(elm2)

のようにします。

この例の場合、

<?xml version="1.0" ?>
<Root>
        <Elm-1/>
        <Elm-2/>
</Root>

というXMLが作成されます。

属性を追加

要素に対して属性を設定したい場合、

  1. 属性を作る
  2. 要素に属性を追加する

という流れで行います。

attr = dom.createAttribute('ID')
attr.value = 'ID0001'
elm.setAttributeNode(attr)

のようにした場合、このように要素へ属性が付与されます。

<Elm-3 ID="ID0001"/>

XMLを文字列で取得

「dom.toprettyxml()」を使うことで、XML文字列を取得する事ができます。

>>> type(dom.toprettyxml())
<class 'str'>
>>> print(dom.toprettyxml())
<?xml version="1.0" ?>
<ルート/>

ファイル出力

ファイル出力したい場合は、このようにします。

with open('test.xml', mode='w', encoding='utf-8') as f:
     f.write(dom.toprettyxml())

ちなみに「encoding」を指定しないと、XML内に日本語がある場合は文字化けします……

参考

こちらを参考にしました。 ありがとうございました。

https://qiita.com/icchi_h/items/44abb5a8147b1ef7475f