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编程中基本的数学计算使用
Feb 04 Python
python pandas 如何替换某列的一个值
Jun 09 Python
解决python通过cx_Oracle模块连接Oracle乱码的问题
Oct 18 Python
python3使用matplotlib绘制散点图
Mar 19 Python
python实现字符串加密 生成唯一固定长度字符串
Mar 22 Python
python单例模式的多种实现方法
Jul 26 Python
python中eval与int的区别浅析
Aug 11 Python
TensorFlow——Checkpoint为模型添加检查点的实例
Jan 21 Python
Python基于QQ邮箱实现SSL发送
Apr 26 Python
python接入支付宝的实例操作
Jul 20 Python
python实现跨年表白神器--你值得拥有
Jan 04 Python
Python中else的三种使用场景
Jun 16 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
linux下 C语言对 php 扩展
2008/12/14 PHP
PHP反射类ReflectionClass和ReflectionObject的使用方法
2013/11/13 PHP
从零开始学YII2框架(六)高级应用程序模板
2014/08/20 PHP
js操作二级联动实现代码
2010/07/27 Javascript
javascript针对DOM的应用分析(三)
2012/04/15 Javascript
为指定的元素添加遮罩层的示例代码
2014/01/15 Javascript
JavaScript 基本概念
2015/01/20 Javascript
JavaScript函数详解
2015/02/27 Javascript
详细解读JavaScript的跨浏览器事件处理
2015/08/12 Javascript
原生js和jQuery实现淡入淡出轮播效果
2015/12/25 Javascript
javascript加载xml 并解析各节点的值(实现方法)
2016/10/12 Javascript
浅谈jQuery的bind和unbind事件(绑定和解绑事件)
2017/03/02 Javascript
node使用promise替代回调函数
2018/05/07 Javascript
微信小程序实现原生步骤条
2019/07/25 Javascript
微信小程序添加插屏广告并设置显示频率(一天一次)
2019/12/06 Javascript
Vue实现一种简单的无限循环滚动动画的示例
2021/01/10 Vue.js
[02:25]DOTA2英雄基础教程 虚空假面
2014/01/02 DOTA
[02:05]2014DOTA2国际邀请赛 BBC外卡赛赛后总结
2014/07/09 DOTA
[03:15]DOTA2-DPC中国联赛1月22日Recap集锦
2021/03/11 DOTA
Python实现的堆排序算法原理与用法实例分析
2017/11/22 Python
python实现超市扫码仪计费
2018/05/30 Python
python脚本监控Tomcat服务器的方法
2018/07/06 Python
老生常谈python中的重载
2018/11/11 Python
正确理解Python中if __name__ == '__main__'
2019/01/24 Python
Python input函数使用实例解析
2019/11/22 Python
Tensorflow 实现分批量读取数据
2020/01/04 Python
python 如何调用远程接口
2020/09/11 Python
css3让div随鼠标移动而抖动起来
2014/02/10 HTML / CSS
StubHub哥伦比亚:购买和出售您的门票
2016/10/20 全球购物
沙特阿拉伯网上购物:Sayidaty Mall
2018/05/06 全球购物
澳大利亚运动鞋商店:Platypus Shoes
2019/09/27 全球购物
销售主管岗位职责范本
2014/02/14 职场文书
学习标兵获奖感言
2014/02/20 职场文书
党员自评材料范文
2014/12/17 职场文书
工作试用期自我评价
2015/03/10 职场文书
孙振耀退休感言
2015/08/01 职场文书