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中的对象拷贝示例 python引用传递
Jan 23 Python
python过滤字符串中不属于指定集合中字符的类实例
Jun 30 Python
关于Python中Inf与Nan的判断问题详解
Feb 08 Python
Python向MySQL批量插数据的实例讲解
Mar 31 Python
浅谈python中requests模块导入的问题
May 18 Python
Python用5行代码写一个自定义简单二维码
Oct 21 Python
python 实现兔子生兔子示例
Nov 21 Python
安装完Python包然后找不到模块的解决步骤
Feb 13 Python
Pycharm IDE的安装和使用教程详解
Apr 30 Python
使用SQLAlchemy操作数据库表过程解析
Jun 10 Python
python实现邮件循环自动发件功能
Sep 11 Python
pycharm远程连接服务器并配置python interpreter的方法
Dec 23 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采用curl实现伪造IP来源的方法
2014/11/21 PHP
基于CI(CodeIgniter)框架实现购物车功能的方法
2018/04/09 PHP
javascript 拖动表格行实现代码
2011/05/05 Javascript
javascript自适应宽度的瀑布流实现思路
2013/02/20 Javascript
基于jquery的has()方法以及与find()方法以及filter()方法的区别详解
2013/04/26 Javascript
浅谈JavaScript中的Math.atan()方法的使用
2015/06/14 Javascript
JS+CSS实现下拉列表框美化效果(3款)
2015/08/15 Javascript
js控制多图左右滚动切换效果代码分享
2015/08/26 Javascript
前端框架Vue.js构建大型应用浅析
2016/09/12 Javascript
JavaScript仿微博发布信息案例
2016/11/16 Javascript
利用jQuery.Validate异步验证用户名是否存在(推荐)
2016/12/09 Javascript
jQuery仿写百度百科的目录树
2017/01/03 Javascript
JavaScript实现的商品抢购倒计时功能示例
2017/04/17 Javascript
Vue.js实现一个SPA登录页面的过程【推荐】
2017/04/29 Javascript
Centos6.8下Node.js安装教程
2017/05/12 Javascript
详解vue中组件参数
2018/07/09 Javascript
微信小程序框架wepy之动态控制类名
2018/09/14 Javascript
vue组件数据传递、父子组件数据获取,slot,router路由功能示例
2019/03/19 Javascript
vue+webpack dev本地调试全局样式引用失效的解决方案
2019/11/12 Javascript
解决vue语法会有延迟加载显现{{xxx}}的问题
2019/11/14 Javascript
[00:59]PWL开团时刻DAY7——我在赶
2020/11/06 DOTA
python中的yield使用方法
2014/02/11 Python
Python的条件语句与运算符优先级详解
2015/10/13 Python
Python实现XML文件解析的示例代码
2018/02/05 Python
Python 判断文件或目录是否存在的实例代码
2018/07/19 Python
用于ETL的Python数据转换工具详解
2020/07/21 Python
高校学生干部的自我评价分享
2013/11/04 职场文书
心理健康活动总结
2014/04/30 职场文书
心理咨询承诺书
2014/05/20 职场文书
党组织领导班子整改方案
2014/10/25 职场文书
2015大学生求职信范文
2015/03/20 职场文书
工厂采购员岗位职责
2015/04/07 职场文书
新闻稿格式范文
2015/07/18 职场文书
在Java中Collection的一些常用方法总结
2021/06/13 Java/Android
如何理解python接口自动化之logging日志模块
2021/06/15 Python
Java实现二分搜索树的示例代码
2022/03/17 Java/Android