【发布时间】:2014-06-14 22:37:37
【问题描述】:
我正在尝试在 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 属性。
任何帮助表示赞赏。
【问题讨论】:
-
<logger message="#[flowVars.stage]" level="INFO" doc:name="Logger"/>输出什么? -
#[flowVars.stage] 是字符串'qa'