Python3解析收到的XML报文,使用ElementTree模块。
1、Python解析XML报文实例代码:
# -*- coding: utf-8 -*- # Pytohn解析XML报文 import xml.etree.ElementTree as ET s = '''<?xml version="1.0" encoding="GB2312" ?> <orderinfo> <err_msg></err_msg> <status>1</status> <orderid>Q1608192552735</orderid> <msg>提交成功</msg> <price>3</price> <sporder_id>1476589680</sporder_id> </orderinfo>''' root = ET.fromstring(s) status = root.find('status').text msg = root.find('msg').text print('STATUS: ', status) print('MSG: ', msg)
输出:
2、Python解析XML嵌套报文格式
# -*- coding: utf-8 -*- # Pytohn解析XML报文 import xml.etree.ElementTree as ET s = '''<?xml version="1.0"?> <response> <code>00</code> <msg>提交成功</msg> <data> <sid>Q201703131445</sid> <status>0</status> <cid>test</cid> <pid>TEST</pid> <tsp>201703131443</tsp> </data> </response>''' root = ET.fromstring(s) # 取code,sid的值 print(root) code = root.find("code").text print(code) sid = root.findall('data/sid')[0].text print(sid)
输出:
3、Pytohn解析带命名空间xmlns的XML报文实例:
# -*- coding: utf-8 -*- # Pytohn解析带命名空间的XML报文 import xml.etree.ElementTree as ET s = '''<?xml version="1.0" encoding="utf-8"?> <soap:Envelope xmlns:soap="http://www.test.org/2017/01/soap-envelope" xmlns:xsi="http://www.test.org/2017/XMLSchema-instance" xmlns:xsd="http://www.test.org/2017/XMLSchema"> <soap:Body> <getOrderResponse xmlns="http://testService.org/"> <getOrderStatus><result><status>00</status><msg>操作成功</msg><data><datalist><charged><orderid>Q2017010317251410068716</orderid><state>7777</state></charged></datalist></data></result></getOrderStatus> </getOrderResponse> </soap:Body> </soap:Envelope> ''' root = ET.fromstring(s) code = root.find('.//{http://testService.org/}getOrderStatus') print(code) print(code.text) root2 = ET.fromstring(code.text) status = root2.find('status').text print('STATUS: ', status) charged = root2.find('.//data/datalist/charged') state = charged.find('state').text print('STATE: ', state)
输出: