Python中XML转JSON、XML转字典代码示例

 更新时间:2024年02月27日 11:52:40   作者:张无忌打怪兽  
大家都知道python的字典和json类似,那么可不可以先将xml转换成json再去做其他的事情呢,下面这篇文章主要给大家介绍了关于Python中XML转JSON、XML转字典的相关资料,需要的朋友可以参考下

前言

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

将 XML 转换为字典/JSON

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

开始使用 xmltodict

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

安装 xmltodict 模块

以下是我们如何使用 Python 包索引(pip)安装 xmltodict 模块:

pip install xmltodict

由于 xmltodict 是一个非常轻量级的模块,因此安装速度会很快。这是此安装的输出:!python install xmltodict module 最好的一点是,该模块不依赖于任何其他外部模块,因此它是轻量级的,并且避免了任何版本冲突。仅供演示,在基于 Debian 的系统上,可以使用 apt 工具轻松安装此模块:

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 在这里,我们只需使用 parse(...) 函数将 XML 数据转换为 JSON,然后我们使用 json 模块以更好的格式打印 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 在这里,我们使用另一个模块 pprint 以格式化的方式打印输出。除此之外,使用 open(...) 函数非常直观,我们使用它来获取文件描述符,然后将文件解析为 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 请注意,为了使其正常工作,必须提供单个 JSON 键。如果我们考虑修改我们的程序,使其在数据的第一级包含多个 JSON 键,如下所示:

import xmltodict

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

print(xmltodict.unparse(student, pretty=True))

在这种情况下,我们在根级别有三个键。如果我们尝试对这种形式的 JSON 进行解析,将会遇到以下错误:!python json to xml unparse error。这是因为 xmltodict 需要使用第一个键构造 XML,作为根 XML 标签。这意味着在数据的根级别只能有一个 JSON 键。

结论

在本课程中,我们学习了一个出色的 Python 模块,可用于解析和转换 XML 为 JSON,反之亦然。我们还学习了如何使用 xmltodict 模块将 XML 转换为字典。

需要注意的点

1.读取xml文件的时候,如果里面包含中文,要指定编码格式

with open(‘input1.xml', encoding=“UTF-8”) as xml_file

2.将字典类型转化为json格式的字符串,需要把ascii码自动识别给关闭,要不然会出现下面的结果

json_conversion = json.dumps(parsed_data, ensure_ascii=False)

3.将json字符串写入文件时候,需要指定编码,否则在中文的地方会出现乱码

with open(‘output.json', ‘w', encoding=“UTF-8”) as json_file

总结

到此这篇关于Python中XML转JSON、XML转字典的文章就介绍到这了,更多相关Python XML转JSON、字典内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • 使用python处理题库表格并转化为word形式的实现

    使用python处理题库表格并转化为word形式的实现

    这篇文章主要介绍了使用python处理题库表格并转化为word形式的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-04-04
  • 基于Python实现自动关机小工具

    基于Python实现自动关机小工具

    上班族经常会遇到这样情况,着急下班结果将关机误点成重启,或者临近下班又通知开会,开完会已经迟了还要去给电脑关机。今天使用PyQt5做了个自动关机的小工具,设置好关机时间然后直接提交即可,需要的可以参考一下
    2022-10-10
  • 彻底解决Python包下载慢问题

    彻底解决Python包下载慢问题

    这篇文章主要介绍了彻底解决Python包下载慢问题,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-11-11
  • python3.4下django集成使用xadmin后台的方法

    python3.4下django集成使用xadmin后台的方法

    本篇文章主要介绍了python3.4下django集成使用xadmin后台的方法,具有一定的参加价值,有兴趣的可以了解一下
    2017-08-08
  • Python 输出时去掉列表元组外面的方括号与圆括号的方法

    Python 输出时去掉列表元组外面的方括号与圆括号的方法

    今天小编就为大家分享一篇Python 输出时去掉列表元组外面的方括号与圆括号的方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-12-12
  • Python matplotlib可视化绘图详解

    Python matplotlib可视化绘图详解

    这篇文章主要介绍了Python matplotlib绘图可视化知识点整理(小结),小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2021-09-09
  • Python迭代器Iterable判断方法解析

    Python迭代器Iterable判断方法解析

    这篇文章主要介绍了Python迭代器Iterable判断方法解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-03-03
  • Python 爬虫的原理

    Python 爬虫的原理

    这篇文章主要介绍了Python 爬虫的原理,文中讲解非常细致,帮助大家更好的学习和认识爬虫,感兴趣的朋友可以了解下
    2020-07-07
  • Python数据分析 Numpy 的使用方法

    Python数据分析 Numpy 的使用方法

    这篇文章主要介绍了Python数据分析 Numpy 的使用方法,Numpy 是一个Python扩展库,专门做科学计算,也是大部分Python科学计算库的基础,关于其的使用方法,需要的小伙伴可以参考下面文章内容
    2022-05-05
  • Python列表对象实现原理详解

    Python列表对象实现原理详解

    这篇文章主要介绍了Python列表对象实现原理详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-07-07

最新评论