gpt4 book ai didi

xpath - ule子xpath表达式不返回节点

转载 作者:行者123 更新时间:2023-12-03 17:38:14 25 4
gpt4 key购买 nike

我正在尝试在Mule流中使用xpath根据元素Stage的当前值(将在Mule变量中)选择元素Host下的属性“值”

这是XML资源文件feedHosts.xml

    <?xml version="1.0"?>
<FeedHosts xmlns:bar="http://www.bar.org" xmlns:foo="http://www.foo.org/">
<Host value="host1.com">
<Stage>qa</Stage>
</Host>
<Host value="host2.com">
<Stage>dev</Stage>
</Host>
<Host value="host3.com">
<Stage>live</Stage>
</Host>
</FeedHosts>


我尝试了一些类似的事情

    <set-payload value="#[groovy: getClass().getResourceAsStream('/feedHosts.xml')]" doc:name="Set Payload to feedHosts.xml"/>
<byte-array-to-string-transformer doc:name="Byte Array to String"/>
<mulexml:xpath-extractor-transformer name="whatever" expression="/FeedHosts/Host[Stage='#[flowVars.stage]']" resultType="NODE"/>
<logger message="#[payload]" level="INFO" doc:name="Logger"/>


这确实将feedHosts.xml加载到有效负载中,但是xpath-extractor-transformer本身返回空的有效负载。显然,它不会返回我想要的value属性。

任何帮助表示赞赏。

最佳答案

XPath位置路径包含几个提供上下文的步骤。最后一个选择数据。

表达式的最后一步选择Host上下文中的所有/FeedHosts元素的集合。谓词将其设置为具有Stage子元素的子集,该子元素包含#[flowVars.stage]返回的文本。

我不熟悉Mule变量插值语法。假定值#[flowVars.stage]实际上产生字符串qadevlive之一,则应选择Host元素之一。

但是您说过,您实际上是想“根据元素Stage的当前值在元素Host下选择属性'值'”。在这种情况下,最后一步应该在属性轴上,并且Hosts设置仅是您的上下文。您需要添加一个额外的步骤:

/FeedHosts/Host[Stage=#[flowVars.stage]]/@value


对于上面的插值语法,我提到了 this reference

关于xpath - ule子xpath表达式不返回节点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24224909/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com