PythonでXMLを辞書に変換する方法はいくつかありますが、ここでは主にxmltodictElementTreeの2つのライブラリを使用した方法を紹介します。

xmltodictライブラリを使用する方法

まずはxmltodictライブラリを使用した方法です。このライブラリはXMLをパースして辞書に変換するためのライブラリです。

import xmltodict
import dicttoxml
import json

xml = """
<foods>
  <food>
    <name>イチゴ</name>
    <color>赤</color>
  </food>
  <food>
    <name>バナナ</name>
    <color>黄</color>
  </food>
</foods>
"""

# XMLから辞書に変換
dict_xml = xmltodict.parse(xml)
print(json.dumps(dict_xml, indent=2, ensure_ascii=False))

# 辞書からXMLに変換
xml = dicttoxml.dicttoxml(dict_xml, attr_type=False, root=False)
print(xml.decode('utf-8'))

このコードでは、まずxmltodict.parseを使用してXMLを辞書に変換しています。次にdicttoxml.dicttoxmlを使用して辞書を再びXMLに変換しています。

ElementTreeライブラリを使用する方法

次に、Python標準ライブラリに含まれているElementTreeを使用した方法を紹介します。

import xml.etree.ElementTree as ET

def element_to_dict(element):
    dict_data = {}
    if element.attrib:
        dict_data.update(element.attrib)
    for child in element:
        child_data = element_to_dict(child)
        if child.tag in dict_data:
            if type(dict_data[child.tag]) is list:
                dict_data[child.tag].append(child_data)
            else:
                dict_data[child.tag] = [dict_data[child.tag], child_data]
        else:
            dict_data[child.tag] = child_data
    return dict_data

tree = ET.parse('data.xml')
root = tree.getroot()
dict_data = element_to_dict(root)

このコードでは、まずET.parseを使用してXMLファイルを読み込み、そのルート要素を取得しています。次にelement_to_dict関数を使用してXMLを辞書に変換しています。

以上が、PythonでXMLを辞書に変換する方法です。xmltodictライブラリとElementTreeライブラリを使用することで、簡単にXMLを辞書に変換することができます。

投稿者 admin

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です