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

如何在Logic Apps中定位XML节点提取值?HTTP返回XML场景求助

解决Power Automate中XML节点的取值问题

嘿,我懂你现在的困扰——你在Power Automate里用HTTP拿到了XML响应,却习惯性用了JSON的键路径来取值,难怪条件判断没效果!别着急,我来给你说清楚怎么正确操作XML节点。

首先得明确:XML和JSON的结构解析逻辑完全不同,Power Automate里处理XML需要用专门的XML函数,而不是JSON的键值引用方式。针对你的场景,有两种常用的正确做法:

方法一:用xml() + xpath()函数组合取值

这是最通用的方式,适合所有XML结构。你的条件表达式可以改成这样:

@or(
    equals(xpath(xml(body('HTTP')), 'string(/job/template_name)'), 'Collection'),
    equals(xpath(xml(body('HTTP')), 'string(/job/template_name)'), 'Drop Off')
)

我来拆解一下每个部分的作用:

  • xml(body('HTTP')):把HTTP返回的原始XML文本转换成Power Automate可识别的XML节点对象,这是处理XML的前提。
  • xpath(..., 'string(/job/template_name)'):用XPath语法精准定位到<template_name>节点,string()函数负责把节点里的文本内容提取成字符串,这样才能和你指定的Collection/Drop Off做等值判断。
  • 外层的or()和equals()逻辑和你原来的完全一致,只是取值方式换成了XML对应的操作。

方法二:直接使用XML节点的点语法(适用于简单结构)

如果你的XML结构比较简单(没有命名空间、没有重复节点),也可以直接用点语法访问节点,表达式会更简洁:

@or(
    equals(xml(body('HTTP')).job.template_name, 'Collection'),
    equals(xml(body('HTTP')).job.template_name, 'Drop Off')
)

这种方式相当于把XML对象转换成了类似JSON的层级结构,直接通过.节点名的方式访问文本值,适合像你这种单层级的XML结构。

注意:如果你的XML带有命名空间,这两种方法都需要额外处理命名空间参数,但你的例子里没有这个情况,所以可以直接用上面的表达式。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 04:06:13