Python中的xmltodict模塊詳解
xmltodict
這好像是第三方依賴包,需要自己用 pip 去進行安裝才可以使用的。
pip3 install xmltodict
至于這個模塊是干什么的,其實看名字就能夠猜到八九不離十。一般我們用 json、yaml 轉換成 dict 可能多一些,xml 轉到 dict 可能用得不多,不過,還是可以來看一看。
xml 字符串解析
先來個簡單的 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)
輸出結果(為了方便好看,我把結果字典字符串轉換成了帶縮進的形式),從下面結果可以看出,其實解析得到的字典是有序字典。
你可能會問為什么是有序字典而不是普通字典呢?
這個當然是為了讓字典的順序和 xml 元素的順序保持一致(畢竟,xml 文件元素順序變化了的話就已經(jīng)不再是原來的那個 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 轉成 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)
輸出結果。
<?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>
到此這篇關于Python中的xmltodict模塊詳解的文章就介紹到這了,更多相關Python中的xmltodict內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
Python Pygame實戰(zhàn)之趣味籃球游戲的實現(xiàn)
這篇文章主要為大家分享了一個基于Python和Pygame實現(xiàn)的一個趣味籃球游戲,文中的示例代碼講解詳細,對我們學習Python有一定幫助,需要的可以參考一下2022-04-04使用XML庫的方式,實現(xiàn)RPC通信的方法(推薦)
下面小編就為大家?guī)硪黄褂肵ML庫的方式,實現(xiàn)RPC通信的方法(推薦)。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2017-06-06Pycharm 2to3配置,python2轉python3方式
這篇文章主要介紹了Pycharm 2to3配置,python2轉python3方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2022-12-12Python中文分詞工具之結巴分詞用法實例總結【經(jīng)典案例】
這篇文章主要介紹了Python中文分詞工具之結巴分詞用法,結合實例形式總結分析了Python針對中文文件的讀取與分詞操作過程中遇到的問題與解決方法,需要的朋友可以參考下2017-04-04Python程序中使用SQLAlchemy時出現(xiàn)亂碼的解決方案
這篇文章主要介紹了Python程序中使用SQLAlchemy時出現(xiàn)亂碼的解決方案,SQLAlchemy是Python常用的操作MySQL數(shù)據(jù)庫的工具,需要的朋友可以參考下2015-04-04