Python中的xmltodict模塊詳解
xmltodict
這好像是第三方依賴包,需要自己用 pip 去進(jìn)行安裝才可以使用的。
pip3 install xmltodict
至于這個(gè)模塊是干什么的,其實(shí)看名字就能夠猜到八九不離十。一般我們用 json、yaml 轉(zhuǎn)換成 dict 可能多一些,xml 轉(zhuǎn)到 dict 可能用得不多,不過,還是可以來看一看。
xml 字符串解析
先來個(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ì)問為什么是有序字典而不是普通字典呢?
這個(gè)當(dāng)然是為了讓字典的順序和 xml 元素的順序保持一致(畢竟,xml 文件元素順序變化了的話就已經(jīng)不再是原來的那個(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ì)大家有所幫助。一起跟隨小編過來看看吧2018-12-12使用XML庫的方式,實(shí)現(xiàn)RPC通信的方法(推薦)
下面小編就為大家?guī)硪黄褂肵ML庫的方式,實(shí)現(xiàn)RPC通信的方法(推薦)。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2017-06-06把csv文件轉(zhuǎn)化為數(shù)組及數(shù)組的切片方法
今天小編就為大家分享一篇把csv文件轉(zhuǎn)化為數(shù)組及數(shù)組的切片方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2018-07-07Pycharm 2to3配置,python2轉(zhuǎn)python3方式
這篇文章主要介紹了Pycharm 2to3配置,python2轉(zhuǎn)python3方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-12-12Python中文分詞工具之結(jié)巴分詞用法實(shí)例總結(jié)【經(jīng)典案例】
這篇文章主要介紹了Python中文分詞工具之結(jié)巴分詞用法,結(jié)合實(shí)例形式總結(jié)分析了Python針對(duì)中文文件的讀取與分詞操作過程中遇到的問題與解決方法,需要的朋友可以參考下2017-04-04Python程序中使用SQLAlchemy時(shí)出現(xiàn)亂碼的解決方案
這篇文章主要介紹了Python程序中使用SQLAlchemy時(shí)出現(xiàn)亂碼的解決方案,SQLAlchemy是Python常用的操作MySQL數(shù)據(jù)庫的工具,需要的朋友可以參考下2015-04-04Python實(shí)現(xiàn)批量解壓文件夾下所有壓縮包
這篇文章主要為大家詳細(xì)介紹了如何使用Python實(shí)現(xiàn)批量解壓文件夾下所有壓縮包,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下2025-02-02