Python中xml和dict格式转换的示例代码

作者:飓风肆虐的青春 时间:2021-07-18 21:30:10 

在做接口自动化的时候,请求数据之前都是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格式转换的示例代码网站的支持!
如果你觉得本文对你有帮助,欢迎转载,烦请注明出处,谢谢!

来源:https://www.cnblogs.com/Testking/p/11809532.html

标签:Python,xml,dict,转换
0
投稿

猜你喜欢

  • Python3中的算术运算符详解

    2022-04-13 03:01:45
  • Mysql数据库常用命令

    2009-03-06 14:29:00
  • Yahoo!网站性能最佳体验的34条黄金守则——图片、Coockie与移动应用

    2008-05-29 13:44:00
  • Python使用Pandas库实现MySQL数据库的读写

    2024-01-22 18:28:28
  • Symfony核心类概述

    2023-11-17 13:59:48
  • Python通过psd-tools解析PSD文件

    2023-05-25 12:08:47
  • python爬虫 正则表达式解析

    2022-07-16 18:24:01
  • vue圆环百分比进度条组件功能的实现

    2024-06-07 15:19:57
  • Vue中金额、日期格式化插件@formatjs/intl的使用及说明

    2024-04-27 16:06:48
  • 基于信息排序的信息理解

    2008-05-16 10:37:00
  • python 函数中的参数类型

    2022-11-16 10:51:28
  • Python 异步之如何保护任务免于取消详解

    2022-08-04 05:03:26
  • Django实现将views.py中的数据传递到前端html页面,并展示

    2022-04-04 10:44:56
  • python中CURL 和python requests的相互转换实现

    2022-01-28 11:49:11
  • 动网论坛的asp 数据库连接代码

    2011-04-06 10:32:00
  • 详解在Python中处理异常的教程

    2023-08-30 15:36:26
  • python3利用tcp实现文件夹远程传输

    2023-09-03 07:44:38
  • python实现剪切功能

    2023-02-27 17:52:01
  • vue组件三大核心概念图文详解

    2024-05-09 15:22:42
  • sql存储过程详解

    2024-01-22 07:00:39
  • asp之家 网络编程 m.aspxhome.com