Python中的xmltodict模塊詳解
xmltodict
這好像是第三方依賴包,需要自己用 pip 去進(jìn)行安裝才可以使用的。
pip3 install xmltodict
至于這個(gè)模塊是干什么的,其實(shí)看名字就能夠猜到八九不離十。一般我們用 json、yaml 轉(zhuǎn)換成 dict 可能多一些,xml 轉(zhuǎn)到 dict 可能用得不多,不過(guò),還是可以來(lái)看一看。
xml 字符串解析
先來(lái)個(gè)簡(jiǎn)單的 xml 瞧一瞧。
<?xml version='1.0' encoding='utf-8'?>
<project>
<artifact>
<versionType>BVersion</versionType>
<repoType>Generic</repoType>
<id>
<offering>openEuler</offering>
<version>openEuler 1.1.T1.B010</version>
</id>
<isClear>Y</isClear>
<copies>
<copy>
<source>/dist</source>
<dest></dest>
</copy>
</copies>
</artifact>
</project>解析 xml
import xmltodict
import json
xml_result = open('testdb.xml', 'r')
xml_dict = xmltodict.parse(xml_result.read())
print(type(xml_dict))
json_str = json.dumps(xml_dict, indent=2)
print(json_str)輸出結(jié)果(為了方便好看,我把結(jié)果字典字符串轉(zhuǎn)換成了帶縮進(jìn)的形式),從下面結(jié)果可以看出,其實(shí)解析得到的字典是有序字典。
你可能會(huì)問(wèn)為什么是有序字典而不是普通字典呢?
這個(gè)當(dāng)然是為了讓字典的順序和 xml 元素的順序保持一致(畢竟,xml 文件元素順序變化了的話就已經(jīng)不再是原來(lái)的那個(gè) xml 文件了)。
<class 'collections.OrderedDict'>
{
"project": {
"artifact": {
"versionType": "BVersion",
"repoType": "Generic",
"id": {
"offering": "openEuler",
"version": "openEuler 1.1.T1.B010"
},
"isClear": "Y",
"copies": {
"copy": {
"source": "/dist",
"dest": null
}
}
}
}
}dict 轉(zhuǎn)成 xml 字符串
import xmltodict
xml_dict = {
"project": {
"artifact": {
"versionType": "BVersion",
"repoType": "Generic",
"id": {
"offering": "openEuler",
"version": "openEuler 1.1.T1.B010"
},
"isClear": "Y",
"copies": {
"copy": {
"source": "/dist",
"dest": None
}
}
}
}
}
xml_str = xmltodict.unparse(xml_dict, pretty=True)
print(xml_str)輸出結(jié)果。
<?xml version="1.0" encoding="utf-8"?> <project> <artifact> <versionType>BVersion</versionType> <repoType>Generic</repoType> <id> <offering>openEuler</offering> <version>openEuler 1.1.T1.B010</version> </id> <isClear>Y</isClear> <copies> <copy> <source>/dist</source> <dest></dest> </copy> </copies> </artifact> </project>
到此這篇關(guān)于Python中的xmltodict模塊詳解的文章就介紹到這了,更多相關(guān)Python中的xmltodict內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Python Pygame實(shí)戰(zhàn)之趣味籃球游戲的實(shí)現(xiàn)
這篇文章主要為大家分享了一個(gè)基于Python和Pygame實(shí)現(xiàn)的一個(gè)趣味籃球游戲,文中的示例代碼講解詳細(xì),對(duì)我們學(xué)習(xí)Python有一定幫助,需要的可以參考一下2022-04-04
對(duì)python捕獲ctrl+c手工中斷程序的兩種方法詳解
今天小編就為大家分享一篇對(duì)python捕獲ctrl+c手工中斷程序的兩種方法詳解,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2018-12-12
使用XML庫(kù)的方式,實(shí)現(xiàn)RPC通信的方法(推薦)
下面小編就為大家?guī)?lái)一篇使用XML庫(kù)的方式,實(shí)現(xiàn)RPC通信的方法(推薦)。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2017-06-06
把csv文件轉(zhuǎn)化為數(shù)組及數(shù)組的切片方法
今天小編就為大家分享一篇把csv文件轉(zhuǎn)化為數(shù)組及數(shù)組的切片方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2018-07-07
Pycharm 2to3配置,python2轉(zhuǎn)python3方式
這篇文章主要介紹了Pycharm 2to3配置,python2轉(zhuǎn)python3方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-12-12
Python中文分詞工具之結(jié)巴分詞用法實(shí)例總結(jié)【經(jīng)典案例】
這篇文章主要介紹了Python中文分詞工具之結(jié)巴分詞用法,結(jié)合實(shí)例形式總結(jié)分析了Python針對(duì)中文文件的讀取與分詞操作過(guò)程中遇到的問(wèn)題與解決方法,需要的朋友可以參考下2017-04-04
Python程序中使用SQLAlchemy時(shí)出現(xiàn)亂碼的解決方案
這篇文章主要介紹了Python程序中使用SQLAlchemy時(shí)出現(xiàn)亂碼的解決方案,SQLAlchemy是Python常用的操作MySQL數(shù)據(jù)庫(kù)的工具,需要的朋友可以參考下2015-04-04
Python實(shí)現(xiàn)批量解壓文件夾下所有壓縮包
這篇文章主要為大家詳細(xì)介紹了如何使用Python實(shí)現(xiàn)批量解壓文件夾下所有壓縮包,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下2025-02-02

