最近在对接微信公众号、微信支付等功能,发现很多都是用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)
--><"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'>

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

广告合作:本站广告合作请联系QQ:858582 申请时备注:广告合作(否则不回)
免责声明:本站资源来自互联网收集,仅供用于学习和交流,请遵循相关法律法规,本站一切资源不代表本站立场,如有侵权、后门、不妥请联系本站删除!

《魔兽世界》大逃杀!60人新游玩模式《强袭风暴》3月21日上线

暴雪近日发布了《魔兽世界》10.2.6 更新内容,新游玩模式《强袭风暴》即将于3月21 日在亚服上线,届时玩家将前往阿拉希高地展开一场 60 人大逃杀对战。

艾泽拉斯的冒险者已经征服了艾泽拉斯的大地及遥远的彼岸。他们在对抗世界上最致命的敌人时展现出过人的手腕,并且成功阻止终结宇宙等级的威胁。当他们在为即将于《魔兽世界》资料片《地心之战》中来袭的萨拉塔斯势力做战斗准备时,他们还需要在熟悉的阿拉希高地面对一个全新的敌人──那就是彼此。在《巨龙崛起》10.2.6 更新的《强袭风暴》中,玩家将会进入一个全新的海盗主题大逃杀式限时活动,其中包含极高的风险和史诗级的奖励。

《强袭风暴》不是普通的战场,作为一个独立于主游戏之外的活动,玩家可以用大逃杀的风格来体验《魔兽世界》,不分职业、不分装备(除了你在赛局中捡到的),光是技巧和战略的强弱之分就能决定出谁才是能坚持到最后的赢家。本次活动将会开放单人和双人模式,玩家在加入海盗主题的预赛大厅区域前,可以从强袭风暴角色画面新增好友。游玩游戏将可以累计名望轨迹,《巨龙崛起》和《魔兽世界:巫妖王之怒 经典版》的玩家都可以获得奖励。