如何在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
相关产品推荐
相关产品推荐

