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基于Tkinter的HelloWorld入门实例
Jun 17 Python
Python微信库:itchat的用法详解
Aug 14 Python
python3+PyQt5+Qt Designer实现堆叠窗口部件
Apr 20 Python
pytorch cnn 识别手写的字实现自建图片数据
May 20 Python
Python3多进程 multiprocessing 模块实例详解
Jun 11 Python
windows10下安装TensorFlow Object Detection API的步骤
Jun 13 Python
PyQt5实现让QScrollArea支持鼠标拖动的操作方法
Jun 19 Python
PyQt5 QTableView设置某一列不可编辑的方法
Jun 25 Python
python适合人工智能的理由和优势
Jun 28 Python
Python可以实现栈的结构吗
May 27 Python
python获取系统内存占用信息的实例方法
Jul 17 Python
在Python中如何使用yield
Jun 07 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提取视频网站页面中的FLASH地址的代码
2010/04/17 PHP
精美漂亮的php分页类代码
2013/04/02 PHP
基于php伪静态的实现详细介绍
2013/04/28 PHP
YII动态模型(动态表名)支持分析
2016/03/29 PHP
JCalendar 日历控件 v1.0 beta[兼容IE&amp;Firefox] 有文档和例子
2007/05/30 Javascript
javascript 出生日期和身份证判断大全
2008/11/13 Javascript
JS 面向对象的5钟写法
2009/07/31 Javascript
用JavaScript修改CSS属性的代码
2013/05/06 Javascript
jquery实现滑动图片自己测试的例子
2013/11/05 Javascript
常用的JavaScript WEB操作方法分享
2015/02/28 Javascript
jQuery中通过ajax的get()函数读取页面的方法
2016/02/29 Javascript
javascript原型继承工作原理和实例详解
2016/04/07 Javascript
jquery插件bootstrapValidator表单验证详解
2016/12/15 Javascript
jQuery事件详解
2017/02/23 Javascript
React Native 使用Fetch发送网络请求的示例代码
2017/12/02 Javascript
AngularJS使用ui-route实现多层嵌套路由的示例
2018/01/10 Javascript
Javascript中prototype与__proto__的关系详解
2018/03/11 Javascript
p5.js入门教程之平滑过渡(Easing)
2018/03/16 Javascript
vue添加axios,并且指定baseurl的方法
2018/09/19 Javascript
Vue多选列表组件深入详解
2021/03/02 Vue.js
[01:32]寻找你心中的那团火 DOTA2 TI9火焰传递活动今日开启
2019/05/16 DOTA
python实现排序算法解析
2018/09/08 Python
python 实现一个反向单位矩阵示例
2019/11/29 Python
Python numpy多维数组实现原理详解
2020/03/10 Python
django ListView的使用 ListView中获取url中的参数值方式
2020/03/27 Python
采用冷却技术的超自然舒适度:GhostBed床垫
2018/09/18 全球购物
法国体育用品商店:GO Sport
2019/10/23 全球购物
测绘工程个人的自我评价
2013/11/10 职场文书
公司总经理工作职责管理办法
2014/02/28 职场文书
实习会计求职自荐信范文
2014/03/10 职场文书
会计演讲稿范文
2014/05/23 职场文书
四年级学生期末评语
2014/12/26 职场文书
学生个人总结范文
2015/02/15 职场文书
党员承诺书格式范文
2015/04/28 职场文书
用python删除文件夹中的重复图片(图片去重)
2021/05/12 Python
如何判断pytorch是否支持GPU加速
2021/06/01 Python