Python で XMLをJSONへ変換をやってみた!
WEB APIを使っていると、jsonフォーマットのデータ受信が多いが、稀にXMLフォーマットで出力されることがある。
XMLパーサで解析していけばいいが、Jsonに比べて保存時のサイズが大きくなってしまったり、そもそも解析が面倒だったりする…
よって、XMLフォーマットで受け取ったら、それをjsonフォーマットへ一気に変換してくれないか?と思って調査&実験して見たのまとめ。
環境
- MacOSX 10.13.3
- Python 3.6.1
準備:"xmltodict" Pythonモジュールのインストール
PyPiからPythonパッケージをインストールする
pip install xmltodict
変換処理
結論からすると、一発変換は困難だったので辞書型を挟んで2ステップ構成となる
- XMLを辞書型へ変換
- 辞書型をJSONへ変換
1. XMLを辞書型へ変換
# サンプルXMLファイル:
<employees>
<person>
<name value="Alice"/>
</person>
<person>
<name value="Bob"/>
</person>
</employees>
# サンプルXMLファイル
xml = """
<employees>
<person>
<name value="Alice"/>
</person>
<person>
<name value="Bob"/>
</person>
</employees>
"""
dict = xmltodict.parse(xml)
# 辞書型へのアクセス方法
dict['emploees']
dict['emploees']['person']
2. 辞書型をJSONへ変換
import json
result = json.dumps(result, indent=2)
print(result)
# 出力結果
'{
"employees": {
"person": [
{
"name":
{
"@value": "Alice"
}
},
{
"name":
{
"@value": "Bob"
}
}
]
}
}'
これで変換処理完了。