Python xml2dictを使用して、xmlをdictionaryに変換する
常山日記さんの記事からてけらぼさんで記載されている
エントリにたどり着きました。
2009-01-10 [Python]巡回 16:30
[python]XMLをdictionaryに変換
xml2dictというモジュールがあるとは・・・
今までゴソゴソとPyanaや4Suite-XMLを調べていたのは、
DB2に保存したXML列のデータを表示するとき、xml+xsltで
構築すればカッコイイのでは?と思っていたからです。
サンプルも書いてみたのですが、
・xsltの記述がつらい。(自分が理解できていないだけですが。)
・pylonsを使用するつもりなので、やっぱりmakoやwebhelperが使いたい
の理由から、躊躇してました。
xmlを解析してhtmlを構成するよい方法が浮かばず
どうしたもんかと悩んでいたのですが、これを使えば
楽にmakoやwebhelperと連携できそうです。
さっそくインストール、と思ったのですが普通のpythonモジュールで
提供されてました。
#wget http://xml2dict.googlecode.com/files/xml2dict-2008.6-tar.gz
として、ダウンロードし
#tar xzvf xml2dict-2008.6-tar.gz
で解凍します。
#cd xml2dict-read-only
で移動し、中身をのぞいてみると
object_dict.py
xml2dict.py
という2つのファイルがありますので、これを適当な場所に
コピーします。
コピーしたディレクトリと同じ階層に、こんなサンプルプログラムを
書いて実行してみました。
#! /usr/bin/env python
# -*- coding:utf-8 -*-
import xml2dict
if __name__ == '__main__':
s = """<?xml version="1.0" encoding="utf-8" ?>
<result>
<count n="1">10</count>
<data><id>491691</id><name>日本語1</name></data>
<data><id>491692</id><name>日本語2</name></data>
<data><id>503938</id><name>hello, world</name></data>
</result>"""
xml = xml2dict.XML2Dict()
r = xml.fromstring(s)
#オブジェクトを触る感覚で、ノードにアクセス可能
print '-------------------'
print r.result.count.n
print r.result.count.value
print '-------------------'
print r.result.data[0].id
print r.result.data[0].name
print '-------------------'
print r.result.data[1].id
print r.result.data[1].name
print '-------------------'
#ループも可能
for data in r.result.data:
print data.id, data.name
実行結果
-------------------
1
10
-------------------
491691
日本語1
-------------------
491692
日本語2
-------------------
491691 日本語1
491692 日本語2
503938 hello, world
お手軽でいい感じ。
早速、XML -> xml2dict -> makoで画面の
描画を試してみようと思います。
もどる