Python中xml和dict格式轉(zhuǎn)換的示例代碼
在做接口自動化的時(shí)候,請求數(shù)據(jù)之前都是JSON格式的,Python有自帶的包來解決。最近在做APP的接口,遇到XML格式的請求數(shù)據(jù),費(fèi)了很大勁來解決,解決方式是:接口文檔拿到的是XML,在線轉(zhuǎn)化為json格式(目的是拿到xml數(shù)據(jù)的模板),存放到j(luò)son文件中,根據(jù)接口名去提取。
- 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)
直接演示了,準(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>
由于目前沒有找到能夠?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識別的屬性是@,所以要把-替換為@(就是這里找了好久)
"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模塊就可以完成,但是在自動化測試框架中這樣使用比較麻煩,而且復(fù)用性不好,封裝好如下
#-*- coding: utf-8 -*
#@author 小測試
#@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)換的示例代碼,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時(shí)回復(fù)大家的。在此也非常感謝大家對腳本之家網(wǎng)站的支持!
如果你覺得本文對你有幫助,歡迎轉(zhuǎn)載,煩請注明出處,謝謝!
相關(guān)文章
pytorch中dataloader 的sampler 參數(shù)詳解
這篇文章主要介紹了pytorch中dataloader 的sampler 參數(shù)詳解,文章圍繞主題展開詳細(xì)的內(nèi)容介紹,具有一定的參考價(jià)值,感興趣的小伙伴可以參考一下2022-09-09
關(guān)于Qt6中QtMultimedia多媒體模塊的重大改變分析
如果您一直在 Qt 5 中使用 Qt Multimedia,則需要對您的實(shí)現(xiàn)進(jìn)行更改。這篇博文將嘗試引導(dǎo)您完成最大的變化,同時(shí)查看 API 和內(nèi)部結(jié)構(gòu)2021-09-09
python 獲取list特定元素下標(biāo)的實(shí)例講解
下面小編就為大家分享一篇python 獲取list特定元素下標(biāo)的實(shí)例講解,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧2018-04-04
python標(biāo)準(zhǔn)庫OS模塊函數(shù)列表與實(shí)例全解
這篇文章主要介紹了python標(biāo)準(zhǔn)庫OS模塊函數(shù)列表與實(shí)例全解,需要的朋友可以參考下2020-03-03
Python如何利用IMAP實(shí)現(xiàn)郵箱客戶端功能
IMAP是另一種讀取電子郵件的協(xié)議,IMAP是讀取郵件服務(wù)器的電子郵件與公布欄信息的方法,也就是說IMAP 允許客戶端的郵件程序存取遠(yuǎn)程的信息,這篇文章主要給大家介紹了關(guān)于Python如何利用IMAP實(shí)現(xiàn)郵箱客戶端功能的相關(guān)資料,需要的朋友可以參考下2021-09-09
python2 與 python3 實(shí)現(xiàn)共存的方法
這篇文章主要介紹了python2 與 python3 實(shí)現(xiàn)共存的方法,本文圖文并茂給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2018-07-07
數(shù)據(jù)挖掘之Apriori算法詳解和Python實(shí)現(xiàn)代碼分享
這篇文章主要介紹了數(shù)據(jù)挖掘之Apriori算法詳解和Python實(shí)現(xiàn)代碼分享,本文先是對Apriori算法做了詳細(xì)介紹,然后給出了Python版實(shí)現(xiàn)代碼,需要的朋友可以參考下2014-11-11
pytorch 實(shí)現(xiàn)查看網(wǎng)絡(luò)中的參數(shù)
今天小編就為大家分享一篇pytorch 實(shí)現(xiàn)查看網(wǎng)絡(luò)中的參數(shù),具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-01-01

