逻辑应用程序使用XPath从具有属性的节点获取值 [英] Logic app get value from node with attributes using XPath
本文介绍了逻辑应用程序使用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
属性值为1
和local-name()
Child
/*[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屋!
查看全文