Python中的xmltodict模块详解

 更新时间:2023年07月26日 09:12:44   作者:Looooking  
这篇文章主要介绍了Python中的xmltodict模块详解,xmltodict一般我们用 json、yaml 转换成 dict 可能多一些,xml 转到 dict 可能用得不多,不过,还是可以来看一看,需要的朋友可以参考下

xmltodict

这好像是第三方依赖包,需要自己用 pip 去进行安装才可以使用的。

pip3 install xmltodict

至于这个模块是干什么的,其实看名字就能够猜到八九不离十。一般我们用 json、yaml 转换成 dict 可能多一些,xml 转到 dict 可能用得不多,不过,还是可以来看一看。

xml 字符串解析

 先来个简单的 xml 瞧一瞧。

<?xml version='1.0' encoding='utf-8'?>
<project>
    <artifact>
        <versionType>BVersion</versionType>
        <repoType>Generic</repoType>
        <id>
            <offering>openEuler</offering>
            <version>openEuler 1.1.T1.B010</version>
        </id>
        <isClear>Y</isClear>
        <copies>
            <copy>
                <source>/dist</source>
                <dest></dest>
            </copy> 
        </copies>
    </artifact>
</project>

解析 xml

import xmltodict
import json
xml_result = open('testdb.xml', 'r')
xml_dict = xmltodict.parse(xml_result.read())
print(type(xml_dict))
json_str = json.dumps(xml_dict, indent=2)
print(json_str)

输出结果(为了方便好看,我把结果字典字符串转换成了带缩进的形式),从下面结果可以看出,其实解析得到的字典是有序字典。

你可能会问为什么是有序字典而不是普通字典呢?

这个当然是为了让字典的顺序和 xml 元素的顺序保持一致(毕竟,xml 文件元素顺序变化了的话就已经不再是原来的那个 xml 文件了)。

<class 'collections.OrderedDict'>
{
  "project": {
    "artifact": {
      "versionType": "BVersion",
      "repoType": "Generic",
      "id": {
        "offering": "openEuler",
        "version": "openEuler 1.1.T1.B010"
      },
      "isClear": "Y",
      "copies": {
        "copy": {
          "source": "/dist",
          "dest": null
        }
      }
    }
  }
}

dict 转成 xml 字符串

import xmltodict
xml_dict = {
  "project": {
    "artifact": {
      "versionType": "BVersion",
      "repoType": "Generic",
      "id": {
        "offering": "openEuler",
        "version": "openEuler 1.1.T1.B010"
      },
      "isClear": "Y",
      "copies": {
        "copy": {
          "source": "/dist",
          "dest": None
        }
      }
    }
  }
}
xml_str = xmltodict.unparse(xml_dict, pretty=True)
print(xml_str)

输出结果。

<?xml version="1.0" encoding="utf-8"?>
<project>
	<artifact>
		<versionType>BVersion</versionType>
		<repoType>Generic</repoType>
		<id>
			<offering>openEuler</offering>
			<version>openEuler 1.1.T1.B010</version>
		</id>
		<isClear>Y</isClear>
		<copies>
			<copy>
				<source>/dist</source>
				<dest></dest>
			</copy>
		</copies>
	</artifact>
</project>

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

相关文章

  • python跨文件使用全局变量的实现

    python跨文件使用全局变量的实现

    本文主要介绍了python跨文件使用全局变量的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-03-03
  • Python面向对象程序设计之继承、多态原理与用法详解

    Python面向对象程序设计之继承、多态原理与用法详解

    这篇文章主要介绍了Python面向对象程序设计之继承、多态,结合实例形式分析了Python面向对象程序设计中继承、多态的相关概念、原理、用法及操作注意事项,需要的朋友可以参考下
    2020-03-03
  • python绘制柱形图的方法

    python绘制柱形图的方法

    这篇文章主要为大家详细介绍了python绘制柱形图的方法,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-04-04
  • python模拟点击玩游戏的实例讲解

    python模拟点击玩游戏的实例讲解

    在本篇文章里小编给大家整理的是一篇关于python模拟点击玩游戏的实例讲解内容,有需要的朋友们可以学习下。
    2020-11-11
  • python+matplotlib实现动态绘制图片实例代码(交互式绘图)

    python+matplotlib实现动态绘制图片实例代码(交互式绘图)

    这篇文章主要介绍了python+matplotlib实现动态绘制图片实例代码(交互式绘图),小编觉得还是挺不错的,具有一定借鉴价值,需要的朋友可以参考下
    2018-01-01
  • 如何使用Pytorch完成图像分类任务详解

    如何使用Pytorch完成图像分类任务详解

    如果你刚刚开始学习 PyTorch,并想学习如何做一些基本的图像分类,可以看看本文,这篇文章主要给大家介绍了关于如何使用Pytorch完成图像分类任务的相关资料,需要的朋友可以参考下
    2022-08-08
  • python实现excel读写数据

    python实现excel读写数据

    这篇文章主要为大家详细介绍了python操作EXCEL读数据、写数据的实例源码,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-04-04
  • python实现的简单猜数字游戏

    python实现的简单猜数字游戏

    这篇文章主要介绍了python实现的简单猜数字游戏,涉及Python操作随机数的技巧,具有一定参考借鉴价值,需要的朋友可以参考下
    2015-04-04
  • 用django设置session过期时间的方法解析

    用django设置session过期时间的方法解析

    这篇文章主要介绍了用django设置session过期时间的方法解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-08-08
  • python中NumPy的安装与基本操作

    python中NumPy的安装与基本操作

    Python虽然也提供了array模块,但其只支持一维数组,不支持多维数组,也没有各种运算函数,因而不适合数值运算,NumPy的出现弥补了这些不足,这篇文章主要给大家介绍了关于python中NumPy的安装与基本操作的相关资料,需要的朋友可以参考下
    2022-03-03

最新评论