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实现通过shelve修改对象实例
Sep 26 Python
python脚本实现xls(xlsx)转成csv
Apr 10 Python
教你使用python画一朵花送女朋友
Mar 29 Python
Django实现全文检索的方法(支持中文)
May 14 Python
Django Rest framework之认证的实现代码
Dec 17 Python
python pandas获取csv指定行 列的操作方法
Jul 12 Python
python 实现从高分辨图像上抠取图像块
Jan 02 Python
windows10在visual studio2019下配置使用openCV4.3.0
Jul 14 Python
Python性能分析工具py-spy原理用法解析
Jul 27 Python
如何用python免费看美剧
Aug 11 Python
python3列表删除大量重复元素remove()方法的问题详解
Jan 04 Python
详解运行Python的神器Jupyter Notebook
Jun 03 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
松下Panasonic RF-B65电路分析
2021/03/02 无线电
使用PHP的日期与时间函数技巧
2008/04/24 PHP
php实现URL加密解密的方法
2016/11/17 PHP
JavaScript之自定义类型
2012/05/04 Javascript
AngularJS基础 ng-include 指令简单示例
2016/08/01 Javascript
canvas学习之API整理笔记(二)
2016/12/29 Javascript
vue2.0 子组件改变props值,并向父组件传值的方法
2018/03/01 Javascript
vue如何将v-for中的表格导出来
2018/05/07 Javascript
详解vue中使用protobuf踩坑记
2019/05/07 Javascript
axios异步提交表单数据的几种方法
2019/08/11 Javascript
JS中的算法与数据结构之集合(Set)实例详解
2019/08/20 Javascript
Vue分页插件的前后端配置与使用
2019/10/09 Javascript
vue实现购物车功能(商品分类)
2020/04/20 Javascript
Jquery使用each函数实现遍历及数组处理
2020/07/14 jQuery
解决echarts vue数据更新,视图不更新问题(echarts嵌在vue弹框中)
2020/07/20 Javascript
Python常用列表数据结构小结
2014/08/06 Python
讲解Python中for循环下的索引变量的作用域
2015/04/15 Python
基于python的Tkinter实现一个简易计算器
2015/12/31 Python
Python找出9个连续的空闲端口
2016/02/01 Python
python中的变量如何开辟内存
2018/06/26 Python
Python Image模块基本图像处理操作小结
2019/04/13 Python
Python+OpenCV实现图像的全景拼接
2020/03/05 Python
Django之choices选项和富文本编辑器的使用详解
2020/04/01 Python
Keras自定义IOU方式
2020/06/10 Python
Python用摘要算法生成token及检验token的示例代码
2020/12/01 Python
用canvas显示验证码的实现
2020/04/10 HTML / CSS
《美丽的小兴安岭》教学反思
2014/02/26 职场文书
企业金融服务方案
2014/06/03 职场文书
教师节标语大全
2014/10/07 职场文书
2014年敬老院工作总结
2014/12/08 职场文书
主持人开幕词
2015/01/29 职场文书
海上钢琴师的观后感
2015/06/11 职场文书
幼儿园教师心得体会范文
2016/01/21 职场文书
2019大学毕业晚会主持词
2019/06/21 职场文书
SQL Server——索引+基于单表的数据插入与简单查询【1】
2021/04/05 SQL Server
Python matplotlib 利用随机函数生成变化图形
2022/04/26 Python