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ステップ構成となる

  1. XMLを辞書型へ変換
  2. 辞書型を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"
                }
            }
        ]
    }
}'

これで変換処理完了。