python语言将xml格式的字符串转成字典类型

xml格式的字符串转成字典类型

示例代码

#!/usr/bin/env python3
# -*- coding:utf-8 -*-

import xml.etree.ElementTree

class Xml2Dict(dict):

    def __init__(self, parent_node):
        if parent_node.items():
            self.updateDict(dict(parent_node.items()))
        for element in parent_node:
            if len(element):
                aDict = Xml2Dict(element)
                self.updateDict({element.tag: aDict})
            elif element.items():
                elementattrib = element.items()
                if element.text:
                    elementattrib.append((element.tag, element.text))
                self.updateDict({element.tag: dict(elementattrib)})
            else:
                self.updateDict({element.tag: element.text})

    def updateDict(self, aDict):
        for key in aDict:
            if key in self:
                value = self.pop(key)
                if type(value) is not list:
                    lst = list()
                    lst.append(value)
                    lst.append(aDict[key])
                    self.update({key: lst})
                else:
                    value.append(aDict[key])
                    self.update({key: value})
            else:
                self.update({key: aDict[key]})

root = xml.etree.ElementTree.fromstring("<?xml version='1.0' encoding='utf-8' ?>\n<Error>\n\t<Code>InvalidAccessKeyId</Code>\n\t<Message>The Access Key Id you provided does not exist in our records</Message>\n\t<Resource>service.cos.myqcloud.com</Resource>\n\t<RequestId>NjQxMmVjY2ZfM2JjZjE2MGJfMmZhMTlfNDQ3MWYxOQ==</RequestId>\n\t<TraceId>OGVmYzZiMmQzYjA2OWNhODk0NTRkMTBiOWVmMDAxODczNTBmNjMwZmQ0MTZkMjg0NjlkNTYyNmY4ZTRkZTk0NzAyMWIzNDJjY2Y0MTI4NWQyZTNjZjk5YzE1OGRhMDZkODQ2YjcwN2ViYzQ0YTg1YjcyZWE4ZGZiYmQ2ZjMxYWY=</TraceId>\n</Error>\n\n")
xmldict = Xml2Dict(root)
print(xmldict)
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值