Python中xml和dict格式轉(zhuǎn)換的示例代碼
在做接口自動(dòng)化的時(shí)候,請(qǐng)求數(shù)據(jù)之前都是JSON格式的,Python有自帶的包來(lái)解決。最近在做APP的接口,遇到XML格式的請(qǐng)求數(shù)據(jù),費(fèi)了很大勁來(lái)解決,解決方式是:接口文檔拿到的是XML,在線轉(zhuǎn)化為json格式(目的是拿到xml數(shù)據(jù)的模板),存放到j(luò)son文件中,根據(jù)接口名去提取。
- github原文介紹:使用XML的Python模塊感覺(jué)就像您在使用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)
直接演示了,準(zhǔn)備一個(gè)原始的XML的數(shù)據(jù)
<?xml version="1.0"?> <mydocument has="an attribute">#has是節(jié)點(diǎn)屬性 <and> <many>elements</many> <many>more elements</many> </and> <plus a="complex"> element as well </plus> </mydocument>
由于目前沒(méi)有找到能夠?qū)ML直接賦值給函數(shù)的方法,所以先用在線轉(zhuǎn)化工具將XML轉(zhuǎn)化為JSON,轉(zhuǎn)化后的結(jié)果為
{ "mydocument": { "-has": "an attribute", #在這里要留意一個(gè)事情,XML是有節(jié)點(diǎn)的,節(jié)點(diǎn)有屬性,json數(shù)據(jù)的鍵之前有-的,就是屬性,但是xmltodict識(shí)別的屬性是@,所以要把-替換為@(就是這里找了好久) "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轉(zhuǎn)xml print(xmldata)#解析結(jié)果可以復(fù)制運(yùn)行查看,結(jié)果是原始數(shù)據(jù) new_dictdata=xmltodict.parse(xmldata,process_namespaces = True)#xml轉(zhuǎn)dict print(new_dictdata)#在這里有一個(gè)注意事項(xiàng),new_dictdata的數(shù)據(jù)格式是<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轉(zhuǎn)化,如果需要轉(zhuǎn)化json,內(nèi)置的json模塊就可以完成,但是在自動(dòng)化測(cè)試框架中這樣使用比較麻煩,而且復(fù)用性不好,封裝好如下 #-*- coding: utf-8 -* #@author 小測(cè)試 #@create 2019-10-30 15:46 import xmltodict """ xml和dict轉(zhuǎn)換 """ def dict_xml(dictdata): """ dict轉(zhuǎn)xml dictstr: dict字符串 return: xml字符串 """ xmlstr=xmltodict.unparse(dictdata, pretty=True) return xmlstr def xml_dict(xmldata,moudle): """ xml轉(zhuǎn)dict xmlstr: xml字符串 moudle:根節(jié)點(diǎn) return: dict字符串 """ data=xmltodict.parse(xmldata,process_namespaces = True) dictdata=dict(data) _dictdata=dict(dictdata[moudle]) dictdata[moudle]=_dictdata return dictdata
總結(jié)
以上所述是小編給大家介紹的Python中xml和dict格式轉(zhuǎn)換的示例代碼,希望對(duì)大家有所幫助,如果大家有任何疑問(wèn)請(qǐng)給我留言,小編會(huì)及時(shí)回復(fù)大家的。在此也非常感謝大家對(duì)腳本之家網(wǎng)站的支持!
如果你覺(jué)得本文對(duì)你有幫助,歡迎轉(zhuǎn)載,煩請(qǐng)注明出處,謝謝!
相關(guān)文章
python按照行來(lái)讀取txt文件全部?jī)?nèi)容(去除空行處理掉\t,\n后以列表方式返回)
這篇文章主要介紹了python按照行來(lái)讀取txt文件全部?jī)?nèi)容 ,去除空行,處理掉\t,\n后,以列表方式返回,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),需要的朋友可以參考下2023-06-06Python實(shí)現(xiàn)在某個(gè)數(shù)組中查找一個(gè)值的算法示例
今天小編就為大家分享一篇Python實(shí)現(xiàn)在某個(gè)數(shù)組中查找一個(gè)值的算法示例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2018-06-06Python中pygame的mouse鼠標(biāo)事件用法實(shí)例
這篇文章主要介紹了Python中pygame的mouse鼠標(biāo)事件用法,以完整實(shí)例形式詳細(xì)分析了pygame響應(yīng)鼠標(biāo)事件的相關(guān)技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下2015-11-11Python+OpenCV實(shí)現(xiàn)實(shí)時(shí)眼動(dòng)追蹤的示例代碼
這篇文章主要介紹了Python+OpenCV實(shí)現(xiàn)實(shí)時(shí)眼動(dòng)追蹤的示例代碼,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2019-11-11利用Python實(shí)現(xiàn)K-Means聚類的方法實(shí)例(案例:用戶分類)
k-means是發(fā)現(xiàn)給定數(shù)據(jù)集的k個(gè)簇的算法,也就是將數(shù)據(jù)集聚合為k類的算法,下面這篇文章主要給大家介紹了關(guān)于利用Python實(shí)現(xiàn)K-Means聚類的相關(guān)資料,需要的朋友可以參考下2022-05-05