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

使用GatewayScript提取给定XML请求中的最新更新日期

GatewayScript提取XML最新更新日期实现方案

以下是示例入站XML请求,我需要遍历所有日期,使用GatewayScript提取最新的更新日期输出。

<rsp:response
xmlns:xs="http://www.w3.org/2001/XMLSchema"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:rsp="rsp.com/employee/Response/v30"
xmlns:res="res.com/Member/details/v1">
<rsp:period>
    <res:Period>
        <rsp:date>2020-07-06T19:38:39</rsp:date>
    </res:Period>
</rsp:period>
<rsp:period>
    <res:Period>
        <rsp:date>2020-08-07T20:38:39</rsp:date>
    </res:Period>
</rsp:period>
<rsp:period>
    <res:Period>
        <rsp:date>2020-05-06T19:18:39</rsp:date>
    </res:Period>
</rsp:period>
</rsp:response>

完整实现代码

// 引入XML处理依赖模块
const dom = require('xmldom');
const xpath = require('xpath');

// 实际DataPower场景可通过session.input.readAsXML()直接获取解析后的DOM对象,无需手动解析字符串
const xmlStr = `上述示例XML内容`;
const doc = new dom.DOMParser().parseFromString(xmlStr);

// 注册命名空间解析器,和XML中的前缀一一对应
const nsResolver = prefix => {
    const nsMap = {
        'rsp': 'rsp.com/employee/Response/v30',
        'res': 'res.com/Member/details/v1'
    };
    return nsMap[prefix] || null;
};

// 用XPath查询所有日期节点
const dateNodes = xpath.select('//rsp:date/text()', doc, nsResolver);

// 遍历比对获取最新日期
let latestDate = new Date(0);
dateNodes.forEach(node => {
    const currentDate = new Date(node.nodeValue);
    if (currentDate > latestDate) latestDate = currentDate;
});

// 输出和原格式一致的日期结果
console.log(latestDate.toISOString().slice(0, 19));
// 示例输出:2020-08-07T20:38:39

注意事项

  • 命名空间必须和入站XML完全匹配,否则XPath会无法匹配到对应节点
  • 示例中的日期为ISO 8601标准格式,可直接传入Date对象比对大小,无需额外格式转换
  • 生产环境建议增加节点存在性、日期格式合法性校验逻辑,避免运行报错

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.10 03:09:01