Python 解析XML—ElementTree模块

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)

输出:

140428_Vw8k_2823264.png

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)

 

输出:

145108_12mG_2823264.png

 

 

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>&lt;result&gt;&lt;status&gt;00&lt;/status&gt;&lt;msg&gt;操作成功&lt;/msg&gt;&lt;data&gt;&lt;datalist&gt;&lt;charged&gt;&lt;orderid&gt;Q2017010317251410068716&lt;/orderid&gt;&lt;state&gt;7777&lt;/state&gt;&lt;/charged&gt;&lt;/datalist&gt;&lt;/data&gt;&lt;/result&gt;</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)

 

输出:

140606_S3m0_2823264.png

 

转载于:https://my.oschina.net/xxWang/blog/818385

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值