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

Java中如何从API返回的XML响应中提取指定字段的取值?

最简单最优的实现方式是使用编程语言自带的XML标准解析库配合XPath查询,不要用正则表达式手动匹配,避免XML格式变动、命名空间、特殊字符等场景下匹配出错。

下面以Python为例,不需要安装任何第三方依赖,用内置的xml.etree.ElementTree即可实现:

import xml.etree.ElementTree as ET

# 注册XML中的默认命名空间
ns = {"ns": "ctessng"}
# 此处替换为你实际获取的API响应XML内容
xml_content = '''<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<BugInfo xmlns="ctessng" xmlns:ns2="http://www.w3.org/1999/xlink">
<Bug id="CSCvz53137">
 <Field name="Assigned Date">09/01/2021 21:12:25</Field>
 <Field name="Archived">N</Field>
 <Field name="Assigner">James Vilson</Field>
 <Field name="Status">V</Field>
 <Field name="Submitter">Spark Mery</Field>
 <Field name="Reason">Technically Inaccurate</Field>
 <Field name="Regression">Y</Field>
 <Field name="Resolved Date">09/02/2021 02:12:37</Field>
 <Field name="Version">001.010</Field>
</Bug>
</BugInfo>'''

# 解析XML内容
root = ET.fromstring(xml_content)
# 定义需要提取的字段,可灵活增减
target_fields = ["Assigned Date", "Assigner", "Submitter", "Resolved Date"]

for field in target_fields:
    # 用XPath查询对应字段的取值
    field_node = root.find(f".//ns:Bug/ns:Field[@name='{field}']", namespaces=ns)
    print(f"{field} --> {field_node.text}")

运行后直接输出你需要的结果:

Assigned Date --> 09/01/2021 21:12:25
Assigner --> James Vilson
Submitter --> Spark Mery
Resolved Date --> 09/02/2021 02:12:37

提示:如果不确定目标字段是否一定存在于XML中,可以在获取field_node.text前加非空判断,避免空指针异常。

方案优势

  • 零额外依赖,直接使用Python标准库即可运行
  • 扩展性强,只要修改target_fields列表就能调整需要提取的字段
  • 稳定性高,兼容XML缩进换行调整、属性顺序变动、命名空间等场景,不会出现正则匹配容易失效的问题
  • 逻辑简洁,维护成本低

如果使用其他编程语言,思路完全一致:先注册XML对应的命名空间,再用XPath查询指定name属性的Field节点获取文本即可。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 13:57:05