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中装饰器的一个妙用
Feb 08 Python
几个提升Python运行效率的方法之间的对比
Apr 03 Python
Python实现股市信息下载的方法
Jun 15 Python
浅析Python的web.py框架中url的设定方法
Jul 11 Python
Python实现遍历目录的方法【测试可用】
Mar 22 Python
python django 实现验证码的功能实例代码
May 18 Python
在python win系统下 打开TXT文件的实例
Apr 29 Python
python定时关机小脚本
Jun 20 Python
一行代码让 Python 的运行速度提高100倍
Oct 08 Python
Python3 获取一大段文本之间两个关键字之间的内容方法
Oct 11 Python
python给图像加上mask,并提取mask区域实例
Jan 19 Python
Python之Matplotlib文字与注释的使用方法
Jun 18 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的配置文件php.ini
2006/10/09 PHP
Linux中用PHP判断程序运行状态的2个方法
2014/05/04 PHP
smarty中post用法实例
2014/11/28 PHP
php判断两个日期之间相差多少个月份的方法
2015/06/18 PHP
Java中final关键字详解
2015/08/10 PHP
学习php设计模式 php实现单例模式(singleton)
2015/12/07 PHP
ecshop适应在PHP7的修改方法解决报错的实现
2016/11/01 PHP
javascript void(0)的妙用
2009/10/21 Javascript
javascript中match函数的用法小结
2014/02/08 Javascript
jQuery自定义添加&quot;$&quot;与解决&quot;$&quot;冲突的方法
2015/01/19 Javascript
浅谈js中StringBuffer类的实现方法及使用
2016/09/02 Javascript
ajax实现动态下拉框示例
2017/01/10 Javascript
JavaScript判断输入是否为数字类型的方法总结
2017/09/28 Javascript
小程序点赞收藏功能的实现代码示例
2018/09/07 Javascript
Koa从零搭建到Api实现项目的搭建方法
2019/07/30 Javascript
vue中使用v-model完成组件间的通信
2019/08/22 Javascript
使用Python构建Hopfield网络的教程
2015/04/14 Python
python爬虫面试宝典(常见问题)
2018/03/02 Python
Django模板Templates使用方法详解
2019/07/19 Python
python视频按帧截取图片工具
2019/07/23 Python
解决Python对齐文本字符串问题
2019/08/28 Python
使用matplotlib的pyplot模块绘图的实现示例
2020/07/12 Python
浅析Python 责任链设计模式
2020/09/11 Python
python 基于opencv 实现一个鼠标绘图小程序
2020/12/11 Python
python爬虫今日热榜数据到txt文件的源码
2021/02/23 Python
学生发电厂实习自我鉴定
2013/09/22 职场文书
初中生物教学反思
2014/01/10 职场文书
社团文化节策划书
2014/02/01 职场文书
经贸专业毕业生求职信范文
2014/05/01 职场文书
新学期开学演讲稿
2014/05/24 职场文书
党员应该树立反腐倡廉的坚定意识思想汇报
2014/09/12 职场文书
机关领导查摆四风思想汇报
2014/09/13 职场文书
处级干部考察材料
2014/12/24 职场文书
水电施工员岗位职责
2015/04/11 职场文书
2015年监理个人工作总结
2015/05/23 职场文书
2015年学校政教工作总结
2015/07/20 职场文书