逻辑应用程序使用XPath从具有属性的节点获取值 [英] Logic app get value from node with attributes using XPath

查看:0
本文介绍了逻辑应用程序使用XPath从具有属性的节点获取值的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我在一个逻辑应用程序中工作,该应用程序从XML检索值。我最初使用的是这个XML结构:

<Parent>
    <Child1>Hello</Child1>
    <Child2>World</Child2>
</Parent>

我能够通过使用这个XPath表达式(它位于for_each操作中)来检索值:

"@{xpath(xml(items('For_each_node')), 'string(/*[local-name()="Parent"]/*[local-name()="Child1"])')}"

它工作得很好,在这个例子中我得到了‘Hello’,但是现在我得到了这个XML:

<Parent>
  <Child N="1">Hello</Child>
  <Child N="2">World</Child>
</Parent>

,现在放在上面的表达式不检索任何内容。我想我需要调整这个表达式来做一些类似的事情,比如‘检索子属性等于1的节点值’,但我不能让它工作,我已经看到了如何做到这一点的例子,但不知何故,在用于XPath的Logic应用程序中使用的语法与‘标准’XPath的使用方式有些不同。

感谢您的帮助,谢谢!

推荐答案

用于选择N属性值为1local-name()Child

的元素的XPath
/*[local-name() = "Parent"]/*[local-name() = "Child" and @N = "1"]

适用于您最初提供的代码:

"@{xpath(xml(items('For_each_node')), 'string(/*[local-name()="Parent"]/*[local-name()="Child" and @N="1"])')}"

如果您的XML没有绑定到名称空间,则可以进一步简化操作。不要将任何元素与*进行一般匹配,然后使用谓词来测试local-name(),只需使用:

/parent/child[@N="1"]

这篇关于逻辑应用程序使用XPath从具有属性的节点获取值的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆