将Python中的XML转换为JSON,将XML转换为字典

今天我们将学习如何在Python中将XML转换为JSON和将XML转换为字典。我们可以使用Python的xmltodict模块来读取XML文件并将其转换为字典或JSON数据。我们还可以遍历大型XML文件并将其转换为字典。在进入编码部分之前,让我们先了解一下为什么需要XML转换。

将XML转换为字典/JSON

XML文件已经逐渐过时,但在网络上仍然有一些使用这种格式的大型系统。相比JSON,XML更加沉重,所以大多数开发者更喜欢在他们的应用程序中使用JSON。当应用程序需要理解任何来源提供的XML时,将其转换为JSON可能是一项繁琐的任务。Python中的xmltodict模块使得执行此任务非常简单和直接。

开始使用xmltodict

我们可以使用xmltodict模块开始,但我们需要首先安装它。我们将主要使用pip进行安装。

安装xmltodict模块

以下是我们如何使用Python Package Index(pip)安装xmltodict模块的步骤:

pip install xmltodict
python install xmltodict module
sudo apt install python-xmltodict

另一个优点是这个模块有一个官方的Debian软件包。

将Python中的XML转换为JSON。

在尝试此模块时,最好的起点是执行它主要用于执行的操作,即执行XML到JSON的转换。让我们看一下以下代码片段,了解如何完成这个操作:

import xmltodict
import pprint
import json

my_xml = """
    <audience>
      <id what="attribute">123</id>
      <name>Shubham</name>
    </audience>
"""

pp = pprint.PrettyPrinter(indent=4)
pp.pprint(json.dumps(xmltodict.parse(my_xml)))
python xml to json

将XML文件转换为JSON

在代码本身中存储XML数据既不总是可行,也不现实。通常,我们将数据存储在数据库或某些文件中。我们也可以直接选择文件并将其转换为JSON。让我们看一个代码片段,演示如何使用XML文件进行转换。

import xmltodict
import pprint
import json

with open('person.xml') as fd:
    doc = xmltodict.parse(fd.read())

pp = pprint.PrettyPrinter(indent=4)
pp.pprint(json.dumps(doc))
python xml file to json

将Python中的XML转换成字典。

正如模块名所暗示的那样,xmltodict将我们提供的XML数据转换为一个简单的Python字典。因此,我们也可以通过字典键轻松访问数据。以下是一个示例程序:

import xmltodict
import pprint
import json

my_xml = """
    <audience>
      <id what="attribute">123</id>
      <name>Shubham</name>
    </audience>
"""
my_dict = xmltodict.parse(my_xml)
print(my_dict['audience']['id'])
print(my_dict['audience']['id']['@what'])
python xml to dict

在XML中支持命名空间

在XML数据中,通常我们会有一组命名空间,用于定义XML文件提供的数据范围。在转换为JSON格式时,这些命名空间也需要在JSON格式中保留。让我们来看一个示例XML文件:

<root xmlns="https://defaultns.com/"
        xmlns:a="https://a.com/">
    <audience>
        <id what="attribute">123</id>
        <name>Shubham</name>
    </audience>
</root>

以下是一个关于如何在JSON格式中包含XML命名空间的示例程序:

import xmltodict
import pprint
import json

with open('person.xml') as fd:
    doc = xmltodict.parse(fd.read(), process_namespaces=True)

pp = pprint.PrettyPrinter(indent=4)
pp.pprint(json.dumps(doc))
xml namespace to dict and json

将JSON转换为XML。

尽管将XML转换为JSON是该模块的主要目标,但xmltodict还支持进行反向操作,即将JSON转换为XML格式。我们将在程序中提供JSON数据。以下是一个示例程序:

import xmltodict

student = {
  "data" : {
    "name" : "Shubham",
    "marks" : {
      "math" : 92,
      "english" : 99
    },
    "id" : "s387hs3"
  }
}

print(xmltodict.unparse(student, pretty=True))
python json to xml
import xmltodict

student = {
    "name" : "Shubham",
    "marks" : {
        "math" : 92,
        "english" : 99
    },
    "id" : "s387hs3"
}

print(xmltodict.unparse(student, pretty=True))
python json to xml unparse error

结论

在这个课程中,我们学习了一个优秀的Python模块,可以用来解析和转换XML到JSON,反之亦然。我们还学习了如何使用xmltodict模块将XML转换为字典。参考资料:API文档。

发表回复 0

Your email address will not be published. Required fields are marked *


广告
将在 10 秒后关闭
bannerAds