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中几个常用的类方法
Apr 08 Python
python基础教程之匿名函数lambda
Jan 17 Python
Python获取指定字符前面的所有字符方法
May 02 Python
Django框架使用富文本编辑器Uedit的方法分析
Jul 31 Python
对python修改xml文件的节点值方法详解
Dec 24 Python
Django工程的分层结构详解
Jul 18 Python
Python如何实现强制数据类型转换
Nov 22 Python
Python图片的横坐标汉字实例
Dec 04 Python
Python调用jar包方法实现过程解析
Aug 11 Python
Python实现加密的RAR文件解压的方法(密码已知)
Sep 11 Python
Python命令行参数argv和argparse该如何使用
Feb 08 Python
python工具dtreeviz决策树可视化和模型可解释性
Mar 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
修改php.ini实现Mysql导入数据库文件最大限制的修改方法
2007/12/11 PHP
php include,include_once,require,require_once
2008/09/05 PHP
php 分页原理详解
2009/08/21 PHP
php学习笔记之基础知识
2014/11/08 PHP
PHP使用Pear发送邮件(Windows环境)
2016/01/05 PHP
Yii实现显示静态页的方法
2016/04/25 PHP
Laravel使用scout集成elasticsearch做全文搜索的实现方法
2018/11/30 PHP
JavaScript入门教程(8) Location地址对象
2009/01/31 Javascript
基于JQuery实现的类似购物商城的购物车
2011/12/06 Javascript
Bootstrap基本插件学习笔记之Tooltip提示工具(18)
2016/12/08 Javascript
Vue.js路由vue-router使用方法详解
2017/03/20 Javascript
vue中用动态组件实现选项卡切换效果
2017/03/25 Javascript
Vue.js学习笔记之修饰符详解
2017/07/25 Javascript
jquery.uploadView 实现图片预览上传功能
2017/08/10 jQuery
Vue2.0 实现歌手列表滚动及右侧快速入口功能
2018/08/08 Javascript
vue模块拖拽实现示例代码
2019/03/09 Javascript
微信小程序防止多次点击跳转和防止表单组件输入内容多次验证功能(函数防抖)
2019/09/19 Javascript
vue实现鼠标经过动画
2019/10/16 Javascript
Python numpy生成矩阵、串联矩阵代码分享
2017/12/04 Python
Django+uni-app实现数据通信中的请求跨域的示例代码
2019/10/12 Python
python连接PostgreSQL过程解析
2020/02/09 Python
Django中使用Json返回数据的实现方法
2020/06/03 Python
Pytorch损失函数nn.NLLLoss2d()用法说明
2020/07/07 Python
python实现一个简单RPC框架的示例
2020/10/28 Python
python中绕过反爬虫的方法总结
2020/11/25 Python
python-图片流传输的思路及示例(url转换二维码)
2020/12/21 Python
css3 2D图片转动样式可以扩充到Js当中
2014/04/29 HTML / CSS
美国创意之家:BulbHead
2017/07/12 全球购物
奥地利网上书店:Weltbild
2017/07/14 全球购物
澳大利亚领先的男装零售连锁店:Lowes
2020/08/07 全球购物
学生社团文化节开幕式主持词
2014/03/28 职场文书
无传销社区工作方案
2014/05/13 职场文书
关爱留守儿童标语
2014/06/18 职场文书
2014年职称评定工作总结
2014/11/26 职场文书
投诉书范文
2015/07/02 职场文书
使用CSS自定义属性实现骨架屏效果
2022/06/21 HTML / CSS