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判断字符串编码的简单实现方法(使用chardet)
Jul 01 Python
Python制作Windows系统服务
Mar 25 Python
NumPy 如何生成多维数组的方法
Feb 05 Python
python中使用PIL制作并验证图片验证码
Mar 15 Python
python实现一组典型数据格式转换
Dec 15 Python
PyQt弹出式对话框的常用方法及标准按钮类型
Feb 27 Python
python SQLAlchemy 中的Engine详解
Jul 04 Python
Python&amp;&amp;GDAL实现NDVI的计算方式
Jan 09 Python
Pytorch使用MNIST数据集实现基础GAN和DCGAN详解
Jan 10 Python
Python读取VOC中的xml目标框实例
Mar 10 Python
Python 通过正则表达式快速获取电影的下载地址
Aug 17 Python
Python tkinter之ComboBox(下拉框)的使用简介
Feb 05 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设计模式 Mediator (中介者模式)
2011/06/26 PHP
php简单中奖算法(实例)
2017/08/15 PHP
浅谈PHP封装CURL
2019/03/06 PHP
Linux下源码包安装Swoole及基本使用操作图文详解
2019/04/02 PHP
JS中字符问题(二进制/十进制/十六进制及ASCII码之间的转换)
2008/11/03 Javascript
Jquery CheckBox全选方法代码附js checkbox全选反选代码
2010/06/09 Javascript
jquery关于图形报表的运用实现代码
2011/01/06 Javascript
js实现简单的购物车有图有代码
2014/05/26 Javascript
jQuery学习笔记之jQuery构建函数的7种方法
2014/06/03 Javascript
JavaScript使用focus()设置焦点失败的解决方法
2014/09/03 Javascript
javascript实现瀑布流自适应遇到的问题及解决方案
2015/01/28 Javascript
有关json_decode乱码及NULL的问题
2015/10/13 Javascript
Js获取图片原始宽高的实现代码
2016/05/17 Javascript
js 基础篇必看(点击事件轮播图的简单实现)
2016/08/20 Javascript
JavaScript排序算法动画演示效果的实现方法
2016/10/18 Javascript
jQuery UI制作选项卡(tabs)
2016/12/13 Javascript
基于three.js编写的一个项目类示例代码
2018/01/05 Javascript
js+html实现点名系统功能
2019/11/05 Javascript
在nodejs中创建child process的方法
2021/01/26 NodeJs
使用原生javascript开发计算器实例代码
2021/02/21 Javascript
python通过exifread模块获得图片exif信息的方法
2015/03/16 Python
tensorflow 使用flags定义命令行参数的方法
2018/04/23 Python
Python 文本文件内容批量抽取实例
2018/12/10 Python
python 去除二维数组/二维列表中的重复行方法
2019/01/23 Python
tensorboard实现同时显示训练曲线和测试曲线
2020/01/21 Python
python等待10秒执行下一命令的方法
2020/07/19 Python
python如何使用腾讯云发送短信
2020/09/17 Python
python 实现数据库中数据添加、查询与更新的示例代码
2020/12/07 Python
python 图像增强算法实现详解
2021/01/24 Python
Ellos丹麦:时尚和服装在线
2016/09/19 全球购物
销售工作岗位职责
2013/12/24 职场文书
趣味运动会策划方案
2014/06/02 职场文书
同学聚会策划方案
2014/06/06 职场文书
新生入学欢迎词
2015/01/26 职场文书
邀请函的格式
2015/01/30 职场文书
银行招聘自荐信
2015/03/06 职场文书