Python中xml和dict格式轉換的示例程式碼
阿新 • • 發佈:2020-01-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轉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格式轉換的示例程式碼,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回覆大家的。在此也非常感謝大家對我們網站的支援!
如果你覺得本文對你有幫助,歡迎轉載,煩請註明出處,謝謝!