Python程序:将XML转换为字典
可扩展标记语言(XML)是一种广泛用于表示结构化信息的格式。它是一种标记语言,允许我们定义自己的标签来描述数据及其结构。
XML的设计既可供人类阅读,也可供机器读取。它使用起始标签和结束标签来包含元素,这些元素可以具有属性并包含嵌套元素。XML文档的结构由一组称为文档类型定义(DTD)或XML模式的规则定义。
在本文中,我们将了解如何使用Python编程将XML转换为字典。
输入输出场景
以下是XML到字典转换的输入输出场景:
输入XML:
<root>
<data>
<fruit>
<name>Strawberry</name>
<color>Red</color>
<price>2.49</price>
</fruit>
<vegetable>
<name>Spinach</name>
<color>Green</color>
<price>1.99</price>
</vegetable>
</data>
</root>
输出字典:
{'root': {'data': {'fruit': {'name': 'Strawberry', 'color': 'Red', 'price': '2.49'}, 'vegetable': {'name': 'Spinach', 'color': 'Green', 'price': '1.99'}}}}
使用xmltodict库
Python中的xmltodict库提供了xmltodict.parse()函数来解析XML数据并将其转换为Python字典。
要使用xmltodict库进行XML到字典的转换,我们需要先安装它。它不是Python标准库的一部分,但我们可以使用pip轻松安装它。命令如下:
示例
#importing xmltodict module
import xmltodict
def xml_to_dict(xml_data):
#converting xml to dictionary
dict_data = xmltodict.parse(xml_data)
return dict_data
#defining an xml string
xml_data = '''
<root>
<data>
<fruit>
<name>Strawberry</name>
<color>Red</color>
<price>2.49</price>
</fruit>
<vegetable>
<name>Spinach</name>
<color>Green</color>
<price>1.99</price>
</vegetable>
</data>
</root>
'''
result_dict = xml_to_dict(xml_data)
print('Output Dictionary:')
print(result_dict)
输出
Output Dictionary:
{'root': {'data': {'fruit': {'name': 'Strawberry', 'color': 'Red', 'price': '2.49'}, 'vegetable': {'name': 'Spinach', 'color': 'Green', 'price': '1.99'}}}}
示例
在这个例子中,我们可以看到如何使用xmltodict模块将来自文件的XML数据转换为字典。
import xmltodict
def xml_file_to_dict(file_path):
with open(file_path, 'r') as xml_file:
xml_data = xml_file.read()
dict_data = xmltodict.parse(xml_data)
return dict_data
#defining an xml file path
file_path = 'Sample.xml'
result_dict = xml_file_to_dict(file_path)
print('Output Dictionary:')
print(result_dict)
输出
Output Dictionary:
{'market': {'fruits': {'fruit': [{'name': 'Apple', 'color': 'Red', 'price': '1.99'}, {'name': 'Banana', 'color': 'Yellow', 'price': '0.99'}, {'name': 'Orange', 'color': 'Orange', 'price': '1.49'}]}, 'vegetables': {'vegetable': [{'name': 'Carrot', 'color': 'Orange', 'price': '0.79'}, {'name': 'Broccoli', 'color': 'Green', 'price': '1.29'}, {'name': 'Tomato', 'color': 'Red', 'price': '0.99'}]}}}
使用xml.etree.ElementTree模块
xml.etree.ElementTree.fromstring()函数是Python标准库中xml.etree.ElementTree模块提供的一种方法。它用于解析字符串格式的XML数据,并创建一个表示XML树根的Element对象。以下是fromstring()函数的语法。此函数返回一个表示XML树根的Element对象。
xml.etree.ElementTree.fromstring(xml_string)
其中,xml_string是一个包含要解析的XML数据的字符串。
示例
在这个例子中,我们将使用xml.etree.ElementTree.fromstring()函数将XML转换为字典。
import xml.etree.ElementTree as ET
def xml_to_dict(xml_data):
root = ET.fromstring(xml_data)
result = {}
for child in root:
if len(child) == 0:
result[child.tag] = child.text
else:
result[child.tag] = xml_to_dict(ET.tostring(child))
return result
#defining an xml string
xml_data = '''
<root>
<data>
<fruit>
<name>Strawberry</name>
<color>Red</color>
<price>2.49</price>
</fruit>
<vegetable>
<name>Spinach</name>
<color>Green</color>
<price>1.99</price>
</vegetable>
</data>
</root>
'''
result_dict = xml_to_dict(xml_data)
print('Output Dictionary:')
print(result_dict)
输出
Output Dictionary:
{'data': {'fruit': {'name': 'Strawberry', 'color': 'Red', 'price': '2.49'}, 'vegetable': {'name': 'Spinach', 'color': 'Green', 'price': '1.99'}}}
这些是使用Python编程将XML转换为字典的几个示例。
广告
数据结构
网络
关系数据库管理系统(RDBMS)
操作系统
Java
iOS
HTML
CSS
Android
Python
C语言编程
C++
C#
MongoDB
MySQL
Javascript
PHP