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

LogicApp中XPath表达式无效及无法获取XML值问题求助

Azure Logic Apps XML解析问题解决方案

问题背景

在Logic Apps中解析WebService返回的XML响应,目标是基于元素属性el="el7"提取值33。在XPath测试工具中//infoRef[@el = "el7"]和//*[@el='el7']均正常工作,但Logic Apps中出现以下问题:

  • Expression_A:xpath(xml(outputs('Compose')),'//infoRef[@el = "el7"]')返回编码后的XML内容,而非目标值33;
  • Expression_B:xpath(xml(outputs('Compose')),'//*[@el='el7']')无法保存,提示表达式无效,转义单引号也未解决。

附精简XML示例:

<?xml version="1.0" encoding="utf-8"?>
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
    <soapenv:Body>
        <infoRef el="el7" soapenc:root="0" soapenv:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" xsi:type="xsd:int" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/">33</infoRef>
    </soapenv:Body>
</soapenv:Envelope>

解决方案

1. 解决Expression_A返回XML节点而非文本值的问题

原XPath仅选中了<infoRef>元素节点,需在XPath末尾添加/text()明确获取元素的文本内容,同时优化引号转义方式:

  • 方式1:用单引号包裹XPath,内部直接使用双引号,无需转义
xpath(xml(outputs('Compose')),'//infoRef[@el = "el7"]/text()')
  • 方式2:用双引号包裹XPath,内部双引号转义为&quot;
xpath(xml(outputs('Compose')),'//infoRef[@el = &quot;el7&quot;]/text()')

2. 解决Expression_B表达式无效的问题

原表达式存在单引号冲突(XPath字符串用单引号包裹时,内部单引号未正确转义)。在Logic Apps中,单引号的转义规则是使用两个连续单引号'',同时添加/text()获取文本值:

  • 方式1:单引号转义版本
xpath(xml(outputs('Compose')),'//*[@el=''el7'']/text()')
  • 方式2:改用双引号避免转义
xpath(xml(outputs('Compose')),'//*[@el = "el7"]/text()')

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.05 00:42:21