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 相关文章推荐
Python3.2中的字符串函数学习总结
Apr 23 Python
python动态加载包的方法小结
Apr 18 Python
python使用matplotlib绘图时图例显示问题的解决
Apr 27 Python
Python 多线程的实例详解
Sep 07 Python
Python numpy 点数组去重的实例
Apr 18 Python
python通过Windows下远程控制Linux系统
Jun 20 Python
python数据归一化及三种方法详解
Aug 06 Python
python conda操作方法
Sep 11 Python
python实现的登录与提交表单数据功能示例
Sep 25 Python
Python selenium的基本使用方法分析
Dec 21 Python
Django日志及中间件模块应用案例
Sep 10 Python
Python lxml库的简单介绍及基本使用讲解
Dec 22 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
php curl常见错误:SSL错误、bool(false)
2011/12/28 PHP
php实现通用的从数据库表读取数据到数组的函数实例
2015/03/21 PHP
Yii使用smsto短信接口的函数demo示例
2016/07/13 PHP
php自定义扩展名获取函数示例
2016/12/12 PHP
PHP简单实现图片格式转换(jpg转png,gif转png等)
2019/10/30 PHP
php实现通过stomp协议连接ActiveMQ操作示例
2020/02/23 PHP
50个优秀经典PHP算法大集合 附源码
2020/08/26 PHP
jQuery获得内容和属性方法及示例
2013/12/02 Javascript
JQuery Tips相关(1)----关于$.Ready()
2014/08/14 Javascript
Hammer.js+轮播原理实现简洁的滑屏功能
2016/02/02 Javascript
Angularjs中$http以post请求通过消息体传递参数的实现方法
2016/08/05 Javascript
js实现微博发布小功能
2017/01/12 Javascript
jquery中$.fn和图片滚动效果实现的必备知识总结
2017/04/21 jQuery
webpack踩坑之路图片的路径与打包
2017/09/05 Javascript
vue使用element-ui的el-input监听不了回车事件的解决方法
2018/01/12 Javascript
微信小程序实现左右联动的实战记录
2018/07/05 Javascript
jQuery实现基本淡入淡出效果的方法详解
2018/09/05 jQuery
解决layui弹出层layer的area过大被遮挡的问题
2019/09/21 Javascript
Vue可自定义tab组件用法实例
2019/10/24 Javascript
Vue 实现CLI 3.0 + momentjs + lodash打包时优化
2019/11/13 Javascript
Vue3新特性之在Composition API中使用CSS Modules
2020/07/13 Javascript
在HTML中使用JavaScript的两种方法
2020/12/24 Javascript
[51:10]VP vs VGJ.S 2018国际邀请赛小组赛BO2 第二场 8.19
2018/08/21 DOTA
[32:36]完美世界DOTA2联赛PWL S3 LBZS vs CPG 第二场 12.12
2020/12/16 DOTA
Python selenium文件上传方法汇总
2020/11/19 Python
Python实现的双色球生成功能示例
2017/12/18 Python
基于python 处理中文路径的终极解决方法
2018/04/12 Python
Tensorflow 查看变量的值方法
2018/06/14 Python
numpy返回array中元素的index方法
2018/06/27 Python
使用css实现android系统的loading加载动画
2019/07/25 HTML / CSS
Kathmandu美国网站:新西兰户外运动品牌
2019/03/23 全球购物
Travelstart沙特阿拉伯:廉价航班、豪华酒店和实惠的汽车租赁优惠
2019/04/06 全球购物
用Python写一个for循环的例子
2016/07/19 面试题
电子商务专业在校生实习自我鉴定
2013/09/29 职场文书
医学院四年学习生活的自我评价
2013/11/06 职场文书
解决hive中导入text文件遇到的坑
2021/04/07 Python