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)