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中的join()函数的用法

    详解Python中的join()函数的用法

    这篇文章主要介绍了详解Python中的join()函数的用法,join()函数主要用来拼接字符串,是Python学习当中的基础知识,需要的朋友可以参考下
    2015-04-04
  • python入门之语句(if语句、while语句、for语句)

    python入门之语句(if语句、while语句、for语句)

    这篇文章主要介绍了python入门之语句,主要包括if语句、while语句、for语句的使用,需要的朋友可以参考下
    2015-01-01
  • 自学python的建议和周期预算

    自学python的建议和周期预算

    在本篇文章中小编给大家分享了关于自学python的建议和周期预算,有兴趣的朋友们可以学习参考下。
    2019-01-01
  • Python中的super()面向对象编程

    Python中的super()面向对象编程

    这篇文章主要介绍了Python的面向对象编程 super,super在Pyhon是一个特殊的的类,想具体了解的朋友请参考下面文章内容
    2021-09-09
  • Pysvn 使用指南

    Pysvn 使用指南

    本文主要介绍了Pysvn 使用指南,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-02-02
  • Python读取中文路径出现乱码问题的解决方案

    Python读取中文路径出现乱码问题的解决方案

    小编在使用opencv读取带有中文路径的图片时,发现会出现乱码的情况,当读取的文件路径出现中文时,(文件夹名为中文或者文件为中文)出现错误,所以本文给大家介绍了Python读取中文路径出现乱码问题的解决方案,需要的朋友可以参考下
    2024-06-06
  • Python随机生成信用卡卡号的实现方法

    Python随机生成信用卡卡号的实现方法

    这篇文章主要介绍了Python随机生成信用卡卡号的实现方法,可实现生成信用卡卡号的功能,具有一定参考借鉴价值,需要的朋友可以参考下
    2015-05-05
  • 在 Linux/Mac 下为Python函数添加超时时间的方法

    在 Linux/Mac 下为Python函数添加超时时间的方法

    这篇文章主要介绍了在 Linux/Mac 下为Python函数添加超时时间,本文通过实例代码给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-02-02
  • 解决python图像处理图像赋值后变为白色的问题

    解决python图像处理图像赋值后变为白色的问题

    这篇文章主要介绍了解决python图像处理图像赋值后变为白色的问题,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-06-06
  • python网络编程学习笔记(10):webpy框架

    python网络编程学习笔记(10):webpy框架

    webpy小巧,简单,实用,可以快速的完成简单的web页面。这里根据webpy Cookbook简要的介绍一下webpy框架,需要的朋友可以参考下
    2014-06-06

最新评论