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

Logic Apps中XPath函数无法获取XML对象变量的元素名

在Azure Logic Apps中使用XPath获取XML元素名称的解决方案

核心问题分析

你遇到的问题主要源于两点:

  1. 存储XML的变量是对象类型(包含$content-type和$content属性),而非直接的XML节点,导致xpath()函数无法正确解析XML结构。
  2. Logic Apps的xpath()函数返回的是节点集合,无法直接通过XPath表达式返回字符串数组,需要结合遍历操作提取名称。

解决方案步骤

1. 转换XML对象为可解析的XML节点

如果你的testXML变量是对象类型(比如从HTTP请求、Blob存储等环节返回的XML对象),需要先提取$content字段中的XML字符串,再用xml()函数转换为可被xpath()解析的XML节点:

xml(variables('testXML')['$content'])

2. 结合XPath与map()提取元素名称

先用xpath()选中root下的所有子元素,再通过map()函数遍历每个节点,提取对应元素的名称:

map(xpath(xml(variables('testXML')['$content']), '/root/*'), item() => string(xpath(item(), 'name(.)')))

执行该表达式后,会直接返回你需要的元素名字符串数组:

["assetRegistration", "assetName", "assetId", "driverId", "driverName", "driverGroupId", "driverGroupName", "assetGroupId", "assetGroupName"]

对之前失败表达式的说明

  • 直接使用xpath(variables('testXML'), '//*/*[name()]'):因为变量是对象而非XML节点,xpath()函数会解析对象的属性($content-type和$content),而非实际XML内容。
  • 使用name(/root/*)这类表达式:XPath 1.0中该表达式仅返回第一个匹配元素的名称,且未处理对象到XML节点的转换,因此返回空或不符合预期的结果。
  • 在线工具可用是因为它们直接处理纯XML字符串,无需适配Logic Apps特有的对象包装结构。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.18 20:18:34