首页 > 编程 > Python > 正文

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

2019-11-25 11:28:09
字体:
来源:转载
供稿:网友

在做接口自动化的时候,请求数据之前都是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转xmlprint(xmldata)#解析结果可以复制运行查看,结果是原始数据new_dictdata=xmltodict.parse(xmldata,process_namespaces = True)#xml转dictprint(new_dictdata)#在这里有一个注意事项,new_dictdata的数据格式是<class 'collections.OrderedDict'>,并不直接是dict,需要自行处理"""处理方式如下"""key_dictdata=dict(new_dictdata)value_dictdata=dict(dict(new_dictdata)["mydocument"])key_dictdata["mydocument"]=value_dictdataprint(key_dictdata)上面就是xml和dict转化,如果需要转化json,内置的json模块就可以完成,但是在自动化测试框架中这样使用比较麻烦,而且复用性不好,封装好如下#-*- coding: utf-8 -*#@author 小测试 #@create 2019-10-30 15:46import xmltodict"""xml和dict转换"""def dict_xml(dictdata):  """  dict转xml  dictstr: dict字符串  return: xml字符串  """  xmlstr=xmltodict.unparse(dictdata, pretty=True)  return xmlstrdef 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格式转换的示例代码,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对武林网网站的支持!
如果你觉得本文对你有帮助,欢迎转载,烦请注明出处,谢谢!

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表