首先使用requests库发送HTTP请求获取XML数据,再用xml.etree.ElementTree解析;对于带命名空间的XML需定义命名空间字典;遍历时用find、findall、get和text方法提取内容,并建议添加异常处理以提升程序稳定性。

调用API接口时,很多服务会以XML格式返回数据。虽然JSON更常见,但像天气、银行、政府类系统仍广泛使用XML。Python提供了多种方式来解析XML响应,下面介绍从请求到解析的完整流程和实用技巧。
使用 requests 库向API发起HTTP请求,获取XML格式的响应内容:
import requests
url = "https://example.com/api/data.xml"
response = requests.get(url)
# 确保编码正确
response.encoding = 'utf-8'
xml_data = response.text
注意:某些API可能需要设置请求头(如 Content-Type 或 Accept),特别是需要认证时,记得加上 headers 参数。
立即学习“Python免费学习笔记(深入)”;
Python内置的 xml.etree.ElementTree(简称ET)是最常用的XML解析工具,无需额外安装。
import xml.etree.ElementTree as ET
# 解析字符串形式的XML
root = ET.fromstring(xml_data)
如果XML存储在本地文件中,也可以用:
tree = ET.parse('data.xml')
root = tree.getroot()
root 表示XML文档的根节点,之后可以遍历其子元素。
假设API返回如下结构的XML:
<?xml version="1.0"?>
<data>
  <item id="1">
    <name>苹果</name>
    <price>5.0</price>
  </item>
  <item id="2">
    <name>香蕉</name>
    <price>3.5</price>
  </item>
</data>
可以通过以下方式提取信息:
for item in root.findall('item'):
    item_id = item.get('id')
    name = item.find('name').text
    price = float(item.find('price').text)
    print(f"ID: {item_id}, 名称: {name}, 价格: {price}")
常用方法说明:
- .find(tag):查找第一个匹配的子元素
- .findall(tag):返回所有匹配的子元素列表
- .get(attr):获取元素属性值
- .text:获取元素文本内容
一些API返回的XML包含命名空间(namespace),例如:
<ns:data xmlns:ns="http://example.com/ns">
  <ns:item><ns:name>测试</ns:name></ns:item>
</ns:data>
此时需要在查找时指定命名空间:
namespaces = {'ns': 'http://example.com/ns'}
for item in root.findall('ns:item', namespaces):
    name = item.find('ns:name', namespaces).text
    print(name)
定义一个命名空间字典,传入 find、findall 等方法中,避免解析失败。
实际开发中,网络请求和XML结构可能出错,应加入必要异常处理:
try:
    response = requests.get(url, timeout=10)
    response.raise_for_status()
    root = ET.fromstring(response.text)
except requests.RequestException as e:
    print(f"请求失败: {e}")
except ET.ParseError as e:
    print(f"XML解析失败: {e}")
同时建议在访问 .text 或 .get() 前检查元素是否存在,防止 AttributeError。
基本上就这些。掌握 requests + ElementTree 的组合,就能高效处理大多数API返回的XML数据。结构清晰时,提取字段简单直接;遇到复杂结构或命名空间,配合文档和调试工具也能快速定位。关键是做好错误防护,让程序更稳定。
以上就是Python怎么解析从API返回的XML响应_Python处理API接口XML返回数据实践的详细内容,更多请关注php中文网其它相关文章!
 
                        
                        每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。
 
                Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号