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将mdb数据库文件导入postgresql数据库示例
Feb 17 Python
Python爬虫番外篇之Cookie和Session详解
Dec 27 Python
Python OpenCV获取视频的方法
Feb 28 Python
python调用系统ffmpeg实现视频截图、http发送
Mar 06 Python
python实现人脸识别经典算法(一) 特征脸法
Mar 13 Python
基于python requests库中的代理实例讲解
May 07 Python
pandas 按照特定顺序输出的实现代码
Jul 10 Python
python爬取淘宝商品销量信息
Nov 16 Python
python 搭建简单的http server,可直接post文件的实例
Jan 03 Python
Python 实现两个服务器之间文件的上传方法
Feb 13 Python
Python中turtle库的使用实例
Sep 09 Python
Python3 无重复字符的最长子串的实现
Oct 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
在WIN98下以apache模块方式安装php
2006/10/09 PHP
php+mysql实现数据库随机重排实例
2014/10/17 PHP
PHP中__autoload和Smarty冲突的简单解决方法
2016/04/08 PHP
thinkPHP2.1自定义标签库的导入方法详解
2016/07/20 PHP
PHP下 Mongodb 连接远程数据库的实例代码
2017/08/30 PHP
关于ExtJS4.1:快捷键支持的问题
2013/04/24 Javascript
使用jQuery时Form表单元素ID和name命名大忌
2014/03/06 Javascript
JS实现超过长度限制后自动跳转下一款文本框的方法
2015/02/23 Javascript
jquery实现点击label的同时触发文本框点击事件的方法
2015/06/05 Javascript
详细介绍jQuery.outerWidth() 函数具体用法
2015/07/20 Javascript
浅析JavaScript Array和string的转换(推荐)
2016/05/20 Javascript
使用伪命名空间封装保护独自创建的对象方法
2016/08/04 Javascript
axios中cookie跨域及相关配置示例详解
2017/12/20 Javascript
微信小程序实现限制用户转发功能的实例代码
2020/02/22 Javascript
利用 Chrome Dev Tools 进行页面性能分析的步骤说明(前端性能优化)
2021/02/24 Javascript
[00:11]战神迅矛
2019/03/06 DOTA
Python爬虫代理IP池实现方法
2017/01/05 Python
Python跨文件全局变量的实现方法示例
2017/12/10 Python
python实现决策树
2017/12/21 Python
python实现给微信指定好友定时发送消息
2019/04/29 Python
numpy.where() 用法详解
2019/05/27 Python
Django单元测试工具test client使用详解
2019/08/02 Python
使用python实现unix2dos和dos2unix命令的例子
2019/08/13 Python
使用python批量修改文件名的方法(视频合并时)
2020/03/24 Python
python中的TCP(传输控制协议)用法实例分析
2019/11/15 Python
Python爬虫库BeautifulSoup的介绍与简单使用实例
2020/01/25 Python
Python3.6 + TensorFlow 安装配置图文教程(Windows 64 bit)
2020/02/24 Python
CSS3效果:自定义“W”形运行轨迹实例
2017/03/29 HTML / CSS
Html5移动端弹幕动画实现示例代码
2018/08/27 HTML / CSS
瑞士隐形眼镜和护理产品网上商店:Linsenklick
2019/10/21 全球购物
英国专业美容产品在线:Mylee(从指甲到脱毛)
2020/07/06 全球购物
留学自荐信
2013/10/10 职场文书
前台接待岗位职责
2013/12/03 职场文书
销售求职信范文
2014/05/26 职场文书
房屋产权证明书
2014/10/15 职场文书
Python 使用dict实现switch的操作
2021/04/07 Python