PythonでXMLを辞書に変換する方法はいくつかありますが、ここでは主にxmltodict
とElementTree
の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を辞書に変換することができます。