Python3でのXMLの作り方です。
日本語でXMLを扱うために「xml.dom.minidom」というライブラリを使用してみたので、使い方をまとめてみました!
インポート
こちらをインポートします。
import xml.dom.minidom
XML作成の流れ
- DOMオブジェクトを作成する
- ルート要素を追加する
- 小要素を追加していく
といった感じです。
ルート要素も小要素も、作成やどこかに追加するという処理で使用する関数は同じです。
「誰に」、「どれを追加するか」を、正しく作っていけば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が作成されます。
属性を追加
要素に対して属性を設定したい場合、
- 属性を作る
- 要素に属性を追加する
という流れで行います。
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内に日本語がある場合は文字化けします……
参考
こちらを参考にしました。 ありがとうございました。