Python中xml和dict格式转换的示例代码


Posted in Python onNovember 07, 2019

在做接口自动化的时候,请求数据之前都是JSON格式的,Python有自带的包来解决。最近在做APP的接口,遇到XML格式的请求数据,费了很大劲来解决,解决方式是:接口文档拿到的是XML,在线转化为json格式(目的是拿到xml数据的模板),存放到json文件中,根据接口名去提取。

  • github原文介绍:使用XML的Python模块感觉就像您在使用JSON
  • 链接:https://github.com/martinblech/xmltodict

下载xmltodict(pip install xmltodict)

C:\Users\wy.DESKTOP-KENPKKP\Desktop\Dingda\dingAPI>pip  install xmltodict
Requirement already satisfied: xmltodict in c:\users\wy.desktop-kenpkkp\appdata\local\programs\python\python36\lib\site-packages
 (0.12.0)

直接演示了,准备一个原始的XML的数据

<?xml version="1.0"?>
<mydocument has="an attribute">#has是节点属性
  <and>
    <many>elements</many>
    <many>more elements</many>
  </and>
  <plus a="complex">
    element as well
  </plus>
</mydocument>

由于目前没有找到能够将XML直接赋值给函数的方法,所以先用在线转化工具将XML转化为JSON,转化后的结果为

{
 "mydocument": {
  "-has": "an attribute",  #在这里要留意一个事情,XML是有节点的,节点有属性,json数据的键之前有-的,就是属性,但是xmltodict识别的属性是@,所以要把-替换为@(就是这里找了好久)
  "and": {
   "many": [
    "elements",
    "more elements"
   ]
  },
  "plus": {
   "-a": "complex",
   "#text": "
    element as well
  "
  }
 }
}

示例代码

dictdata={
  "mydocument": {
    "@has": "an attribute",
    "and": {
      "many": [
        "elements",
        "more elements"
      ]
    },
    "plus": {
      "@a": "complex",
      "#text": "element as well"
}
}
}
xmldata=xmltodict.unparse(dictdata,pretty=True)#dict转xml
print(xmldata)#解析结果可以复制运行查看,结果是原始数据
new_dictdata=xmltodict.parse(xmldata,process_namespaces = True)#xml转dict
print(new_dictdata)#在这里有一个注意事项,new_dictdata的数据格式是<class 'collections.OrderedDict'>,并不直接是dict,需要自行处理
"""
处理方式如下
"""
key_dictdata=dict(new_dictdata)
value_dictdata=dict(dict(new_dictdata)["mydocument"])
key_dictdata["mydocument"]=value_dictdata
print(key_dictdata)
上面就是xml和dict转化,如果需要转化json,内置的json模块就可以完成,但是在自动化测试框架中这样使用比较麻烦,而且复用性不好,封装好如下
#-*- coding: utf-8 -*
#@author 小测试 
#@create 2019-10-30 15:46
import xmltodict
"""
xml和dict转换
"""
def dict_xml(dictdata):
  """
  dict转xml
  dictstr: dict字符串
  return: xml字符串
  """
  xmlstr=xmltodict.unparse(dictdata, pretty=True)
  return xmlstr
def xml_dict(xmldata,moudle):
  """
  xml转dict
  xmlstr: xml字符串
  moudle:根节点
  return: dict字符串
  """
  data=xmltodict.parse(xmldata,process_namespaces = True)
  dictdata=dict(data)
  _dictdata=dict(dictdata[moudle])
  dictdata[moudle]=_dictdata
  return dictdata

总结

以上所述是小编给大家介绍的Python中xml和dict格式转换的示例代码,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!
如果你觉得本文对你有帮助,欢迎转载,烦请注明出处,谢谢!

Python 相关文章推荐
Python中index()和seek()的用法(详解)
Apr 27 Python
python如何使用正则表达式的前向、后向搜索及前向搜索否定模式详解
Nov 08 Python
Python搭建FTP服务器的方法示例
Jan 19 Python
pycharm+django创建一个搜索网页实例代码
Jan 24 Python
python flask 如何修改默认端口号的方法步骤
Jul 12 Python
Flask框架模板继承实现方法分析
Jul 31 Python
python3 tcp的粘包现象和解决办法解析
Dec 09 Python
浅谈keras的深度模型训练过程及结果记录方式
Jan 24 Python
Django+python服务器部署与环境部署教程详解
Mar 30 Python
Java爬虫技术框架之Heritrix框架详解
Jul 22 Python
如何利用python读取micaps文件详解
Oct 18 Python
pytorch加载预训练模型与自己模型不匹配的解决方案
May 13 Python
python对象转字典的两种实现方式示例
Nov 07 #Python
python多线程高级锁condition简单用法示例
Nov 07 #Python
python文件操作的简单方法总结
Nov 07 #Python
详解Django admin高级用法
Nov 06 #Python
Python全局锁中如何合理运用多线程(多进程)
Nov 06 #Python
Python实现socket非阻塞通讯功能示例
Nov 06 #Python
Python中生成一个指定长度的随机字符串实现示例
Nov 06 #Python
You might like
thinkphp控制器调度使用示例
2014/02/24 PHP
php 批量添加多行文本框textarea一行一个
2014/06/03 PHP
腾讯CMEM的PHP扩展编译安装方法
2015/09/25 PHP
php抽奖概率算法(刮刮卡,大转盘)
2020/04/17 PHP
php 删除指定文件夹的实例讲解
2017/07/25 PHP
PHP attributes()函数讲解
2019/02/03 PHP
JQuery 操作Javascript对象和数组的工具函数小结
2010/01/22 Javascript
JS中的log对象获取以及debug的写法介绍
2014/03/03 Javascript
jquery实现保存已选用户
2014/07/21 Javascript
JScript中的条件注释详解
2015/04/24 Javascript
浅谈JavaScript超时调用和间歇调用
2015/08/30 Javascript
jquery京东商城双11焦点图多图广告特效代码分享
2015/09/06 Javascript
JavaScript中的数组遍历forEach()与map()方法以及兼容写法介绍
2016/05/19 Javascript
使用jQuery.Qrcode插件在客户端动态生成二维码并添加自定义Logo
2016/09/01 Javascript
教你快速搭建Node.Js服务器的方法教程
2017/03/30 Javascript
vue.js  父向子组件传参的实例代码
2017/10/29 Javascript
详解使用React进行组件库开发
2018/02/06 Javascript
Vue 中使用 CSS Modules优雅方法
2018/04/09 Javascript
详解js的视频和音频采集
2018/08/09 Javascript
vue.js template模板的使用(仿饿了么布局)
2018/08/13 Javascript
[01:14]2019完美世界城市挑战赛(秋季赛)全国总决赛精彩花絮
2020/01/08 DOTA
Python3.6基于正则实现的计算器示例【无优化简单注释版】
2018/06/14 Python
在Python中实现函数重载的示例代码
2019/12/12 Python
在matplotlib中改变figure的布局和大小实例
2020/04/23 Python
Python特殊属性property原理及使用方法解析
2020/10/09 Python
Python使用内置函数setattr设置对象的属性值
2020/10/16 Python
python实现不同数据库间数据同步功能
2021/02/25 Python
应届生会计电算化求职信
2013/10/03 职场文书
财政局长自荐信范文
2013/12/22 职场文书
关于廉洁的广播稿
2014/01/30 职场文书
马智宇结婚主持词
2014/04/01 职场文书
乡镇遵守党的政治纪律情况对照检查材料
2014/09/26 职场文书
2014年保险业务员工作总结
2014/12/23 职场文书
转让协议书
2015/01/27 职场文书
开天辟地观后感
2015/06/09 职场文书
vue组件冲突之引用另一个组件出现组件不显示的问题
2022/04/13 Vue.js