python xml字符串和dict字典互转
字典 转 xml
def trans_dict_to_xml(data_dict):
"""
字典转xml
:param data_dict:字典数据
:return:xml
"""
# 字典转换为xml字符串
data_xml = []
for k in data_dict.keys(): # 遍历字典排序后的key
v = data_dict.get(k) # 取出字典中key对应的value
data_xml.append('<{key}>{value}</{key}>'.format(key=k, value=v))
xml = ''.join(data_xml)
xml1 = "<?xml version='1.0' encoding='utf-8' ?><xml>{}</xml>".format(xml)
print("xml字符串:" + xml1)
return xml1
data_dict = {
'TXN_TRACE_ID': '1',
'TXN_DEVICE_ID': '2',
'TXN_CODE': '3',
'TXN_AMOUNT': '4',
'TXN_DT': '5',
'TXN_TM': '6',
'TXN_NOTICE_TPYE': '7'
}
trans_dict_to_xml(data_dict)
dict 转 xml
import xml.etree.cElementTree as ET
def xml_to_dict(xml_str):
"""
xml 转 字典
:param xml_str:xml字符串
:return:msg:字典格式数据
"""
msg = {}
# 截取从'<?xml'到'</xml>'的字符串
b = xml_str.find('<?xml')
a = xml_str.find('</xml>')
xml_str = xml_str[b:a + 7]
# print("xml_str:",xml_str)
root_elem = ET.fromstring(xml_str)
# 确定根节点是:'xml'
if root_elem.tag == 'xml':
for ch in root_elem:
msg[ch.tag] = ch.text
return msg
if __name__ == '__main__':
xml_str = "<?xml version='1.0' encoding='utf-8' ?><xml><TXN_TRACE_ID>1</TXN_TRACE_ID><TXN_DEVICE_ID>2</TXN_DEVICE_ID><TXN_CODE>3</TXN_CODE><TXN_AMOUNT>4</TXN_AMOUNT><TXN_DT>5</TXN_DT><TXN_TM>6</TXN_TM><TXN_NOTICE_TPYE>7</TXN_NOTICE_TPYE></xml>"
dict_msg = xml_to_dict(xml_str)
print("dict_msg:",dict_msg)