プログラミング初心者がアーキテクトっぽく語る

見苦しい記事も多数あるとは思いますが訂正しつつブログと共に成長していければと思います

minidomによるXML処理

minidomはDOMの最小実装でありPython標準モジュールの一部だ。

Python標準ライブラリでXMLを処理するならばElement Treeで十分であり、minidomを積極的に利用する場面は思い浮かばない。しかし標準ライブラリなので一応、使い方を調べてみた。


インストール

  • 標準ライブラリなのでインストールは不要

import

  • 名前が長いので「MD」とするのがプラクティス
import xml.dom.minidom as MD

読み込み

dom = MD.parse('test.xml')

Iterate

  • 第1階層のキーのみを表示する
  • 第2階層以下を表示したい場合はfor文をネストすること
for child in dom.childNodes:
     for node in child.childNodes:
         print(node.nodeName)

要素へのアクセス

  • タグはnode.nodeNameでアクセス
  • 属性はnode.getAttributeNode(属性名).nodeValueでアクセス
  • 値はnode.firstChild.dataでアクセス
    ids = dom.getElementsByTagName('id')
    id = ids.item(0)
    print(id.nodeName)
    print(id.getAttributeNode('tag').nodeValue)
    for elem in id.childNodes:
        print(elem.data)
    # or
    print(id.firstChild.data)
  • タグ(エレメント)を探す
  • 結果は配列なのでfor文、ids[0]、ids.item(0)などで目的のノードを取得すること
ids = dom.getElementsByTagName('id')
  • ノードの子ノードを全て取得する
childs = id.childNodes