针对指定REST API,如何用XPath或查询参数筛选<deleted>=false的数据?
筛选REST API返回XML中为false的数据的实现方案
背景信息
指定REST API地址:https://{ip}:{port}/fedsvc/objectstores
该API返回的XML响应如下:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <Objects> <Object> <Id>objct040</Id> <Name>longevity-large</Name> <status>Starting</status> <deleted>false</deleted> </Object> <Object> <Id>obs1040</Id> <Name>SRS-large</Name> <status>Starting</status> <deleted>true</deleted> </Object> </Objects>
需求是仅提取<deleted>字段值为false的数据,预期结果如下:
<Id>objct040</Id> <Name>longevity-large</Name> <status>Starting</status> <deleted>false</deleted>
实现方案
1. 使用XPath筛选(客户端/工具端处理)
如果是在获取XML响应后,通过客户端代码或XML处理工具进行筛选,可以使用以下XPath表达式:
- 定位符合条件的
<Object>节点:/Objects/Object[deleted='false'] - 直接获取该节点下的所有子元素(即预期结果内容):
这个表达式会精准匹配/Objects/Object[deleted='false']/*<deleted>值为false的<Object>节点下的全部子节点,完全符合提取需求。
2. 使用API查询参数(服务端过滤,需API支持)
如果该REST API本身支持查询过滤功能,可以在请求URL中添加过滤参数,常见的格式示例:
https://{ip}:{port}/fedsvc/objectstores?deleted=false
不过具体的参数格式需要参考API的官方文档,不同API的过滤规则可能不同,比如有些会使用filter=deleted eq false这类格式。
内容的提问来源于stack exchange,提问作者Sourabh Agrawal
相关产品推荐
相关产品推荐

