def trans_xml_to_dict(xml): """ 將微信支付交互返回的 XML 格式數據轉化為 Python Dict 對象 :param xml: 原始 XML 格式數據 :return: dict 對象 """ soup = BeautifulSoup(xml, features='xml') xml = soup.find('xml') if not xml: return {} # 將 XML 數據轉化為 Dict data = dict([(item.name, item.text) for item in xml.find_all()]) return data def trans_dict_to_xml(data): """ 將 dict 對象轉換成微信支付交互所需的 XML 格式數據 :param data: dict 對象 :return: xml 格式數據 """ xml = [] for k in sorted(data.keys()): v = data.get(k) if k == 'detail' and not v.startswith('<![CDATA['): v = '<![CDATA[{}]]>'.format(v) xml.append('<{key}>{value}</{key}>'.format(key=k, value=v)) return '<xml>{}</xml>'.format(''.join(xml))