Python程序将XML转换为字典

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转换为字典的几个示例。

Camera课程

Python教程

Java教程

Web教程

数据库教程

图形图像教程

办公软件教程

Linux教程

计算机教程

大数据教程

开发工具教程