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抓取行政区划码的方法
Nov 28 Python
详解Python if-elif-else知识点
Jun 11 Python
Python多线程应用于自动化测试操作示例
Dec 06 Python
Python绘图Matplotlib之坐标轴及刻度总结
Jun 28 Python
Python将文字转成语音并读出来的实例详解
Jul 15 Python
pytorch 实现张量tensor,图片,CPU,GPU,数组等的转换
Jan 13 Python
Python 实现Image和Ndarray互相转换
Feb 19 Python
OpenCV 之按位运算举例解析
Jun 19 Python
selenium学习教程之定位以及切换frame(iframe)
Jan 04 Python
python爬虫线程池案例详解(梨视频短视频爬取)
Feb 20 Python
Python标准库pathlib操作目录和文件
Nov 20 Python
Python实现视频自动打码的示例代码
Apr 08 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 存储文本换行实现方法
2010/01/05 PHP
linux命令之调试工具strace的深入分析
2013/06/03 PHP
基于ThinkPHP删除目录及目录文件函数
2020/10/28 PHP
用dom+xhtml+css制作的一个相册效果代码打包下载
2008/01/24 Javascript
js调用flash的效果代码
2008/04/26 Javascript
基于JQuery的访问WebService的代码(可访问Java[Xfire])
2010/11/19 Javascript
基于jquery跨浏览器显示的file上传控件
2011/10/24 Javascript
jquery特效 幻灯片效果示例代码
2013/07/16 Javascript
原生javascript获取元素样式
2014/12/31 Javascript
jQuery获取checkboxlist的value值的方法
2015/09/27 Javascript
JavaScript提高性能知识点汇总
2016/01/15 Javascript
JS实现新建文件夹功能
2017/06/17 Javascript
使用vue-cli+webpack搭建vue开发环境的方法
2017/12/22 Javascript
JS实现十字坐标跟随鼠标效果
2017/12/25 Javascript
react native 原生模块桥接的简单说明小结
2019/02/26 Javascript
node.js中ws模块创建服务端和客户端,网页WebSocket客户端
2019/03/06 Javascript
vuex + keep-alive实现tab标签页面缓存功能
2019/10/17 Javascript
nodemon实现Typescript项目热更新的示例代码
2019/11/19 Javascript
基于ts的动态接口数据配置的详解
2019/12/18 Javascript
JS删除数组指定值常用方法详解
2020/06/04 Javascript
微信小程序实现点击导航条切换页面
2020/11/19 Javascript
[54:56]DOTA2上海特级锦标赛主赛事日 - 5 总决赛Liquid VS Secret第三局
2016/03/06 DOTA
python基础教程之Hello World!
2014/08/29 Python
pandas中的DataFrame按指定顺序输出所有列的方法
2018/04/10 Python
Python交互环境下实现输入代码
2018/06/22 Python
Python编程在flask中模拟进行Restful的CRUD操作
2018/12/28 Python
python实现最小二乘法线性拟合
2019/07/19 Python
浅谈Python访问MySQL的正确姿势
2020/01/07 Python
竞聘上岗演讲稿范文
2014/01/10 职场文书
幼儿教师工作感言
2014/02/14 职场文书
入党积极分子群众意见
2015/06/01 职场文书
女方家长婚礼答谢词
2015/09/29 职场文书
事业单位工作人员2015年度思想工作总结
2015/10/15 职场文书
python 如何用map()函数创建多线程任务
2021/04/07 Python
Python代码风格与编程习惯重要吗?
2021/06/03 Python
「SHOW BY ROCK!!」“雫シークレットマインド”组合单曲MV公开
2022/03/21 日漫