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编写一个简单的Lisp解释器的教程
Apr 03 Python
Python数据结构与算法之完全树与最小堆实例
Dec 13 Python
PyQt5每天必学之拖放事件
Aug 27 Python
基于python进行桶排序与基数排序的总结
May 29 Python
Python文件读写保存操作的示例代码
Sep 14 Python
python3+selenium自动化测试框架详解
Mar 17 Python
详解Python中的内建函数,可迭代对象,迭代器
Apr 29 Python
详解python函数的闭包问题(内部函数与外部函数详述)
May 17 Python
pytorch方法测试详解——归一化(BatchNorm2d)
Jan 15 Python
详解基于python的图像Gabor变换及特征提取
Oct 26 Python
jupyter notebook 写代码自动补全的实现
Nov 02 Python
使用pandas生成/读取csv文件的方法实例
Jul 09 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生成二维码的几种方式整理及使用实例
2013/06/03 PHP
在Windows XP下安装Apache+MySQL+PHP环境
2015/02/22 PHP
学习php设计模式 php实现原型模式(prototype)
2015/12/07 PHP
PHP连续签到功能实现方法详解
2019/12/04 PHP
浅析ajax请求json数据并用js解析(示例分析)
2013/07/13 Javascript
javascript获得网页窗口实际大小的示例代码
2013/09/21 Javascript
Jquery响应回车键直接提交表单操作代码
2014/07/25 Javascript
jQuery实现响应鼠标滚动的动感菜单效果
2015/09/21 Javascript
简单实现AngularJS轮播图效果
2020/04/10 Javascript
基于wordpress的ajax写法详解
2018/01/02 Javascript
vue.js实现点击后动态添加class及删除同级class的实现代码
2018/04/04 Javascript
vue使用微信扫一扫功能的实现代码
2020/04/11 Javascript
JS实现拖拽元素时与另一元素碰撞检测
2020/08/27 Javascript
小程序角标的添加及绑定购物车数量进行实时更新的实现代码
2020/12/07 Javascript
python根据给定文件返回文件名和扩展名的方法
2015/03/27 Python
在Docker上开始部署Python应用的教程
2015/04/17 Python
python中的break、continue、exit()、pass全面解析
2017/08/05 Python
python学习入门细节知识点
2018/03/29 Python
selenium+python实现自动化登录的方法
2018/09/04 Python
解决python 未发现数据源名称并且未指定默认驱动程序的问题
2018/12/07 Python
python实现批量nii文件转换为png图像
2019/07/18 Python
节日快乐! Python画一棵圣诞树送给你
2019/12/24 Python
Tensorflow:转置函数 transpose的使用详解
2020/02/11 Python
Python 如何在字符串中插入变量
2020/08/01 Python
python3实现飞机大战
2020/11/29 Python
纯CSS3实现圆角效果(含IE兼容解决方法)
2014/05/07 HTML / CSS
使用CSS3美化HTML表单的技巧演示
2016/05/17 HTML / CSS
英国领先的运动营养品牌:Protein Dynamix
2018/01/02 全球购物
设计模式的基本要素是什么
2014/04/21 面试题
竞聘医务工作人员的自我评价分享
2013/11/04 职场文书
写给妈妈的道歉信
2014/01/11 职场文书
党员志愿者活动方案
2014/08/28 职场文书
管理失职检讨书
2015/05/05 职场文书
团队执行力培训心得体会
2015/08/15 职场文书
奖学金发言稿(范文)
2019/08/21 职场文书
MySql 8.0及对应驱动包匹配的注意点说明
2021/06/23 MySQL