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

如何从SOAP响应解析XPath提取键值对并保存为CSV

从SOAP响应提取指定元素生成CSV的解决方案

你的核心问题是要排除嵌套在environment、folder节点内的同名元素,精准提取ns:return直接子节点的ax2159:id和ax2159:name,以下是两种工具的实现方案:

方法一:使用xmllint

通过精准XPath过滤命名空间和节点层级,再用awk将提取的id和name配对成CSV:

# 提取目标id和name并生成CSV
xmllint --xpath "//*[local-name()='getAllUserApplicationsResponse']/*[local-name()='return']/*[local-name()='id' and namespace-uri()='http://types.core.api.admin.abc.example.com/xsd']/text() | //*[local-name()='getAllUserApplicationsResponse']/*[local-name()='return']/*[local-name()='name' and namespace-uri()='http://types.core.api.admin.abc.example.com/xsd']/text()" request.xml | awk 'NR%2==1{id=$0} NR%2==0{print id","$0}' > output.csv

关键说明:

  • namespace-uri()确保只匹配ax2159前缀对应的元素(其命名空间为http://types.core.api.admin.abc.example.com/xsd)
  • awk将奇数行的id与偶数行的name配对,输出标准CSV格式

方法二:使用xmlstarlet(更简洁高效)

xmlstarlet支持直接绑定命名空间并遍历节点生成CSV,无需额外处理工具:

xmlstarlet sel -N ns="http://application.app.api.admin.abc.example.com" -N ax2159="http://types.core.api.admin.abc.example.com/xsd" -t -m "//ns:getAllUserApplicationsResponse/ns:return" -v "ax2159:id" -o "," -v "ax2159:name" -n request.xml > output.csv

关键说明:

  • -N:绑定SOAP响应中的命名空间前缀,避免模糊匹配
  • -m:遍历每个ns:return节点
  • -v:提取指定元素的文本内容,-o ","添加分隔符,-n换行分隔每条记录

生成的CSV内容示例:

396112,com.example.app.name

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.11 03:44:55