Python xmltodict模块安装及代码实例


Posted in Python onOctober 05, 2020

最近在对接微信公众号、微信支付等功能,发现很多都是用xml格式的。在使用django日常处理的时候,都是手动拼接的,真的是很恶心。今天仔细的看了一下python的xmltodict模块,发现其实完全可以不用手动拼接,轮子本身都有了。只要那来用就好了。之前自己的方式反而有点傻逼了。

首先使用和安装都很简单

安装

pip install xmltodict #如果安装失败,直接去github上下载手动装吧,https://github.com/martinblech/xmltodict

从名字就知道了 他是一个支持从xml转换到python的dict互相转换的模块。(真的很方便)

dict转换xml(用的比较多)

这个的使用场景是真的多,比如微信支付各种信息获取都需要用到。

xmltodict.unparse()方法可以方便的将字典转换为xml字符串。

import xmltodict
d = {
'xml':{
'a': '123',
'b': '234'
}
}
xml_tmp = xmltodict.unparse(d)
print(xml_tmp)
--><?xml version="1.0" encoding="utf-8"?><xml><a>123</a><b>234</b></xml>

看着上面的字典格式也有点奇怪,这里要说明一下,生成xml只能只有一个根,否则会报错ValueError: Document must have exactly one root.

解决方式也比较简单,只要将你需要的字典内容在嵌套到一个xml的键里面,保证字典的第一层只有xml这个键即可。

xml转换dict

这个方法用的不多,我目前主要是用在处理回调解析微信传给我们的xml数据。

xmltodict.parse()将xml转换为字典。

接着上面的例子,继续往下吧。

import xmltodict
d = {
'xml':{
'a': '123',
'b': '234'
}
}
xml_tmp = xmltodict.unparse(d)
print(xml_tmp)
#将转换的xml在转换回字典
dt = xmltodict.parse(xml_tmp)
print(dt,type(dt))
--> OrderedDict([('xml', OrderedDict([('a', '123'), ('b', '234')]))]) <class 'collections.OrderedDict'>

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python的Django框架中的URL配置与松耦合
Jul 15 Python
Python实现字典的key和values的交换
Aug 04 Python
Python字符串拼接、截取及替换方法总结分析
Apr 13 Python
Python中Numpy包的安装与使用方法简明教程
Jul 03 Python
Python PyAutoGUI模块控制鼠标和键盘实现自动化任务详解
Sep 04 Python
Python中判断子串存在的性能比较及分析总结
Jun 23 Python
浅谈Pytorch中的torch.gather函数的含义
Aug 18 Python
Python reversed函数及使用方法解析
Mar 17 Python
python实现批量修改文件名
Mar 23 Python
Python爬虫爬取电影票房数据及图表展示操作示例
Mar 27 Python
Python判断远程服务器上Excel文件是否被人打开的方法
Jul 13 Python
用 Python 定义 Schema 并生成 Parquet 文件详情
Sep 25 Python
Python pathlib模块使用方法及实例解析
Oct 05 #Python
Python fileinput模块如何逐行读取多个文件
Oct 05 #Python
Python利用Pillow(PIL)库实现验证码图片的全过程
Oct 04 #Python
Python中random模块常用方法的使用教程
Oct 04 #Python
python代数式括号有效性检验示例代码
Oct 04 #Python
关于Python字符编码与二进制不得不说的一些事
Oct 04 #Python
Python实现EM算法实例代码
Oct 04 #Python
You might like
全国FM电台频率大全 - 9 上海市
2020/03/11 无线电
PHP spl_autoload_register实现自动加载研究
2011/12/06 PHP
深入PHP操作MongoDB的技术总结
2013/06/02 PHP
解析argc argv在php中的应用
2013/06/24 PHP
js 图片轮播(5张图片)
2008/12/30 Javascript
javascript面向对象之二 命名空间
2011/02/08 Javascript
图片Slider 带左右按钮的js示例
2013/08/30 Javascript
jquery 删除字符串最后一个字符的方法解析
2014/02/11 Javascript
12种JavaScript常用的MVC框架比较分析
2015/11/16 Javascript
纯JS代码实现气泡效果
2016/05/04 Javascript
全面接触神奇的Bootstrap导航条实战篇
2016/08/01 Javascript
Javascript 函数的四种调用模式
2016/11/05 Javascript
BootStrap便签页的简单应用
2017/01/06 Javascript
Angularjs中数据绑定的实例详解
2017/08/25 Javascript
Vue2.0权限树组件实现代码
2017/08/29 Javascript
结合mint-ui移动端下拉加载实践方法总结
2017/11/08 Javascript
默认浏览器设置及vue自动打开页面的方法
2018/09/21 Javascript
关于vue表单提交防双/多击的例子
2019/10/31 Javascript
解决vue动态路由异步加载import组件,加载不到module的问题
2020/07/26 Javascript
python基础教程之自定义函数介绍
2014/08/29 Python
python实现简易版计算器
2020/06/22 Python
python读取一个目录下所有txt里面的内容方法
2018/06/23 Python
python调用java的jar包方法
2018/12/15 Python
python中count函数简单用法
2020/01/05 Python
用python批量移动文件
2021/01/14 Python
C++:局部变量能否和全局变量重名
2014/03/03 面试题
临床医师专业个人自我评价范文
2013/11/07 职场文书
艺术应用与设计个人的自我评价
2013/11/23 职场文书
中学教师岗位职责
2013/11/26 职场文书
个人简历中自我评价
2014/02/11 职场文书
开业主持词
2014/03/21 职场文书
重阳节标语大全
2014/10/07 职场文书
2015年仓管员工作总结
2015/04/21 职场文书
因公司原因离职的辞职信范文
2015/05/12 职场文书
2015年国庆节广播稿
2015/08/19 职场文书
python区块链持久化和命令行接口实现简版
2022/05/25 Python