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 网络编程起步(Socket发送消息)
Sep 06 Python
python虚拟环境virualenv的安装与使用
Dec 18 Python
python实现协同过滤推荐算法完整代码示例
Dec 15 Python
Python简单实现的代理服务器端口映射功能示例
Apr 08 Python
使用pycharm生成代码模板的实例
May 23 Python
python 解决动态的定义变量名,并给其赋值的方法(大数据处理)
Nov 10 Python
解决Django 在ForeignKey中出现 non-nullable field错误的问题
Aug 06 Python
py-charm延长试用期限实例
Dec 22 Python
opencv python图像梯度实例详解
Feb 04 Python
使用PyQt5实现图片查看器的示例代码
Apr 21 Python
python工具dtreeviz决策树可视化和模型可解释性
Mar 03 Python
Python与C++中梯度方向直方图的实现
Mar 17 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
mysql 查询指定日期时间内sql语句实现原理与代码
2012/12/16 PHP
php生成毫秒时间戳的实例讲解
2017/09/22 PHP
TNC vs IO BO3 第一场2.13
2021/03/10 DOTA
FLASH 广告之外的链接
2008/12/16 Javascript
jQuery AJAX实现调用页面后台方法和web服务定义的方法分享
2012/03/01 Javascript
基于CSS3和jQuery实现跟随鼠标方位的Hover特效
2016/07/25 Javascript
js实现自定义进度条效果
2017/03/15 Javascript
详解vue-router 初始化时做了什么
2018/06/11 Javascript
JS前端知识点总结之内置对象,日期对象和定时器相关操作
2019/07/05 Javascript
JS删除对象中某一属性案例详解
2020/09/08 Javascript
在Vue中使用mockjs代码实例
2020/11/25 Vue.js
[01:07:19]2018DOTA2亚洲邀请赛 4.5 淘汰赛 Mineski vs VG 第一场
2018/04/06 DOTA
[09:47]2018DOTA2亚洲邀请赛4.5SOLO赛 No[o]ne vs Sumail
2018/04/06 DOTA
Python类的多重继承问题深入分析
2014/11/09 Python
Python实现约瑟夫环问题的方法
2016/05/03 Python
python爬虫 正则表达式使用技巧及爬取个人博客的实例讲解
2017/10/20 Python
Python3中条件控制、循环与函数的简易教程
2017/11/21 Python
django 解决manage.py migrate无效的问题
2018/05/27 Python
python编写简易聊天室实现局域网内聊天功能
2018/07/28 Python
Python字符串、列表、元组、字典、集合的补充实例详解
2019/12/20 Python
win10下opencv-python特定版本手动安装与pip自动安装教程
2020/03/05 Python
基于python生成英文版词云图代码实例
2020/05/16 Python
python re的findall和finditer的区别详解
2020/11/15 Python
HTML5不支持标签和新增标签详解
2016/06/27 HTML / CSS
瑞典Happy Socks美国官网:购买色彩斑斓的快乐袜子
2016/10/19 全球购物
三只松鼠官方旗舰店:全网坚果销售第1
2017/11/25 全球购物
如何将整数int转换成字串String
2014/03/21 面试题
js实现弹框效果
2021/03/24 Javascript
大学生四个方面的自我评价
2013/09/19 职场文书
《狐假虎威》教学反思
2014/02/07 职场文书
小学优秀教师事迹材料
2014/12/16 职场文书
介绍信怎么写
2015/05/05 职场文书
大学生活感想
2015/08/10 职场文书
2015年评职称个人工作总结
2015/10/15 职场文书
奥特曼十大神器:奥特手镯在榜,第一是贝利亚的神器
2022/03/18 日漫
SpringBoot Http远程调用的方法
2022/08/14 Java/Android