在 Python 中將 XML 轉換為字典
Hemank Mehtani
2023年1月30日
2021年7月9日
XML 被稱為可擴充套件標記語言。它用於儲存和傳輸中小量資料,也廣泛用於共享結構化資訊。Python 使我們能夠解析和修改 XML 文件。
在本教程中,我們將演示如何在 Python 中將 XML 字串轉換為字典。
在 Python 中使用 xmltodict
模組將 XML 字串轉換為字典
xmltodict
是 Python 中的一個模組,它使使用 XML 感覺像 JSON。由於 XML 的結構,可以使用此模組輕鬆將其轉換為字典。
請參考下面的程式碼片段。
import xmltodict
xml_data = """
<student>
<id>DEL</id>
<name> Jack </name>
<email>jack@example.com</email>
<smeseter>8</smeseter>
<class>CSE</class>
<cgpa> 7.5</cgpa>
</student>
"""
d = xmltodict.parse(xml_data)
print(d)
輸出:
OrderedDict([('student', OrderedDict([('id', 'DEL'), ('name', 'Jack'), ('email', 'jack@example.com'), ('smeseter', '8'), ('class', 'CSE'), ('cgpa', '7.5')]))])
在這裡,我們可以看到結果是一個有序字典的形式。有序字典保留字典中鍵值對的順序。parse()
函式在這裡將 XML 資料解析為有序字典。
在 Python 中使用 cElemenTree
庫將 XML 字串轉換為字典
cElementTree
是一個必不可少的 Python 庫,允許我們解析和導航 XML 文件。使用 cElementTree
,我們可以將 XML 文件分解為易於使用的樹結構。
我們將建立自己的函式來解析 XML 資料並將其轉換為字典。我們將使用 collections
模組中的 deafultdict
類物件以我們想要的形式獲得最終結果。
請參考以下程式碼。
from collections import defaultdict
from xml.etree import cElementTree as ET
def xml2dict(t):
d = {t.tag: {} if t.attrib else None}
children = list(t)
if children:
dd = defaultdict(list)
for dc in map(etree_to_dict, children):
for k, v in dc.items():
dd[k].append(v)
d = {t.tag: {k: v[0] if len(v) == 1 else v
for k, v in dd.items()}}
if t.attrib:
d[t.tag].update(('@' + k, v)
for k, v in t.attrib.items())
if t.text:
text = t.text.strip()
if children or t.attrib:
if text:
d[t.tag]['#text'] = text
else:
d[t.tag] = text
return d
xml_data = ET.XML("""
<student>
<id>DEL</id>
<name> Jack </name>
<email>jack@example.com</email>
<smeseter>8</smeseter>
<class>CSE</class>
<cgpa> 7.5</cgpa>
</student>
""")
d = xml2dict(xml_data)
print(d)
輸出:
{'student': {'id': 'DEL', 'name': 'Jack', 'email': 'jack@example.com', 'smeseter': '8', 'class': 'CSE', 'cgpa': '7.5'}}
請注意,這是字典的樹結構。請注意,最終字典通常是這兩種方法中的巢狀字典。這是由於 XML 的結構造成的。
相關文章 - Python Dictionary
- 如何檢查 Python 字典中是否存在某鍵
- 在 Python 中將字典轉換為列表
- Python 如何得到資料夾下的所有檔案
- 在 Python 字典中尋找最大值
- 如何按值對字典排序
- 如何在 Python 2 和 3 中合併兩個字典