python的xmltodict模塊


最近在對接微信公眾號、微信支付等功能,發現很多都是用xml格式的。在使用django日常處理的時候,都是手動拼接的,真的是很惡心。今天仔細的看了一下python的xmltodict模塊,發現其實完全可以不用手動拼接,輪子本身都有了。只要那來用就好了。之前自己的方式反而有點傻逼了。

首先使用和安裝都很簡單

安裝

  1. pip install xmltodict #如果安裝失敗,直接去github上下載手動裝吧,https://github.com/martinblech/xmltodict

從名字就知道了 他是一個支持從xml轉換到python的dict互相轉換的模塊。(真的很方便)

dict轉換xml(用的比較多)

這個的使用場景是真的多,比如微信支付各種信息獲取都需要用到。

xmltodict.unparse()方法可以方便的將字典轉換為xml字符串。

  1. import xmltodict
  2. d = {
  3. 'xml':{
  4. 'a': '123',
  5. 'b': '234'
  6. }
  7. }
  8. xml_tmp = xmltodict.unparse(d)
  9. print(xml_tmp)
  10. --><?xml version="1.0" encoding="utf-8"?><xml><a>123</a><b>234</b></xml>

看着上面的字典格式也有點奇怪,這里要說明一下,生成xml只能只有一個根,否則會報錯ValueError: Document must have exactly one root.
解決方式也比較簡單,只要將你需要的字典內容在嵌套到一個xml的鍵里面,保證字典的第一層只有xml這個鍵即可。

xml轉換dict

這個方法用的不多,我目前主要是用在處理回調解析微信傳給我們的xml數據。
xmltodict.parse()將xml轉換為字典。
接着上面的例子,繼續往下吧。

    1. import xmltodict
    2. d = {
    3. 'xml':{
    4. 'a': '123',
    5. 'b': '234'
    6. }
    7. }
    8. xml_tmp = xmltodict.unparse(d)
    9. print(xml_tmp)
    10. #將轉換的xml在轉換回字典
    11. dt = xmltodict.parse(xml_tmp)
    12. print(dt,type(dt))
    13. --> OrderedDict([('xml', OrderedDict([('a', '123'), ('b', '234')]))]) <class 'collections.OrderedDict'>


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM