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

Azure Logic Apps中获取XML内FIToFICstmrCdtTrf节点下首个子节点的问题

解决XPath查询带默认命名空间XML的问题

你的问题核心在于XML存在默认命名空间,而XPath默认不会自动识别默认命名空间下的节点,导致你写的表达式无法正确定位到目标节点,进而返回异常的二进制数据。

问题分析

你的XML根节点Document带有默认命名空间:

<Document xmlns="urn:iso:std:iso:20022:tech:xsd:pacs.008.001.02">

在XPath中,默认命名空间下的节点不能直接用裸名称(比如FIToFICstmrCdtTrf)查询,必须先为这个命名空间绑定一个前缀,再通过前缀来定位节点。

解决方案

以你使用的xpath()函数(看起来像是Power Automate/Logic Apps环境)为例,正确的写法需要先声明命名空间前缀,再构造XPath表达式:

获取FIToFICstmrCdtTrf下的首个子节点

xpath(xml(triggerBody()), 'declare namespace pacs="urn:iso:std:iso:20022:tech:xsd:pacs.008.001.02"; /pacs:Document/pacs:FIToFICstmrCdtTrf/*[1]')

如果你想直接定位到GrpHdr节点(也就是首个子节点),也可以写:

xpath(xml(triggerBody()), 'declare namespace pacs="urn:iso:std:iso:20022:tech:xsd:pacs.008.001.02"; /pacs:Document/pacs:FIToFICstmrCdtTrf/pacs:GrpHdr')

表达式说明

  • declare namespace pacs="...":为默认命名空间绑定一个名为pacs的前缀(前缀名可以自定义,比如iso也可以)。
  • /pacs:Document/pacs:FIToFICstmrCdtTrf:通过前缀定位到目标父节点。
  • /*[1]:选取该节点下的第一个子节点;如果明确知道子节点名称,直接写/pacs:GrpHdr会更精准。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.27 13:12:33