You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用Python解析API返回的XML响应并提取指定数据?

解决XML响应解析错误并提取目标数据

你遇到的JSONDecodeError原因很直接:你试图用JSON解析器处理XML格式的响应,两种格式完全不兼容,自然会报错。下面提供两种Python解析XML的方案,帮你提取deviceName、softwareVersion、udiSerialNr等数据:

方案一:使用Python标准库解析XML

无需额外安装依赖,直接用Python自带的xml.etree.ElementTree库处理:

import xml.etree.ElementTree as ET

if response.status_code == 200:
    # 获取XML格式的响应文本
    xml_content = response.text
    # 解析XML内容
    root = ET.fromstring(xml_content)
    
    # 定位到ethernetSummaryDTO节点
    eth_summary_node = root.find('ethernetSummaryDTO')
    
    # 提取目标数据
    device_name = eth_summary_node.find('deviceName').text
    software_version = eth_summary_node.find('softwareVersion').text
    udi_serial_nr = eth_summary_node.find('udiDetails/udiSerialNr').text
    
    # 打印或使用数据
    print(f"设备名称: {device_name}")
    print(f"软件版本: {software_version}")
    print(f"UDI序列号: {udi_serial_nr}")

方案二:将XML转为字典(贴近JSON操作习惯)

如果更习惯像操作JSON一样处理数据,可以用xmltodict库把XML转换成字典:

  1. 先安装依赖:
pip install xmltodict
  1. 编写解析代码:
import xmltodict

if response.status_code == 200:
    xml_content = response.text
    # 将XML转为普通字典
    resp_dict = xmltodict.parse(xml_content, dict_constructor=dict)
    
    # 按层级提取数据,逻辑和你原来操作JSON类似
    eth_summary = resp_dict['mgmtResponse']['ethernetSummaryDTO']
    device_name = eth_summary['deviceName']
    software_version = eth_summary['softwareVersion']
    udi_serial_nr = eth_summary['udiDetails']['udiSerialNr']
    
    print(f"设备名称: {device_name}")
    print(f"软件版本: {software_version}")
    print(f"UDI序列号: {udi_serial_nr}")

内容的提问来源于stack exchange,提问作者mac

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.24 21:53:10