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实现一个自动下载视频、弹幕、评论的软件,文中的示例代码讲解详细,需要的小伙伴可以参考一下
    2022-08-08
  • Python对ElasticSearch获取数据及操作

    Python对ElasticSearch获取数据及操作

    这篇文章主要为大家详细介绍了Python对ElasticSearch获取数据及操作,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2019-04-04
  • python强大的hook函数使用及应用场景

    python强大的hook函数使用及应用场景

    钩子函数(hook function)是把我们自己实现的hook函数在某一时刻挂接到目标挂载点上,这篇文章主要介绍了python强大的hook函数使用及应用场景,需要的朋友可以参考下
    2023-05-05
  • python3 sqlite3限制条件查询的操作

    python3 sqlite3限制条件查询的操作

    这篇文章主要介绍了python3 sqlite3限制条件查询的操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2021-04-04
  • 深入理解Python中的range()函数用法、原理与实战指南

    深入理解Python中的range()函数用法、原理与实战指南

    range()函数是Python中生成数字序列的基础工具,支持多种调用方式和参数组合,适用于循环控制、数据处理、性能优化和高级应用,掌握其用法和特性,可以提高代码的效率和可读性,本文给大家介绍Python中的range()函数用法、原理与实战指南,感兴趣的朋友跟随小编一起看看吧
    2025-12-12
  • 使用Python实现自动化获取文件的全面指南

    使用Python实现自动化获取文件的全面指南

    在现代数据处理和分析中,文件获取是不可或缺的第一步,使用 Python 进行文件获取自动化,能够显著提升效率并降低错误率,下面我们就来看看具体实现方法吧
    2025-07-07
  • Python中运维神器Psutil的用法详解

    Python中运维神器Psutil的用法详解

    Python的开源库psutil为我们提供了一个强大的工具,能够轻松获取和分析系统利用率的信息,下面就跟随小编一起深入了解一下它的具体使用吧
    2025-02-02
  • pytorch标签转onehot形式实例

    pytorch标签转onehot形式实例

    今天小编就为大家分享一篇pytorch标签转onehot形式实例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-01-01
  • Python高效合并Excel多Sheet工作表

    Python高效合并Excel多Sheet工作表

    在日常办公中,我们经常会遇到一个Excel文件里包含多个工作表的情况,下面小编就来和大家详细介绍一下如何使用Python实现高效合并Excel多Sheet工作表吧
    2025-09-09
  • 详解Python中open()函数指定文件打开方式的用法

    详解Python中open()函数指定文件打开方式的用法

    well,我们这里所指的文件打开方式并不是指调用什么应用程序去打开某个文件,而是只读只写或者二进制等的打开方式,这里我们就来详解Python中open()函数指定文件打开方式的用法
    2016-06-06

最新评论