【问题标题】:Mule splitter, foreach collection using xpath3 expressionMule 分离器,使用 xpath3 表达式的 foreach 集合
【发布时间】:2015-07-24 21:05:54
【问题描述】:

我有这个 Mule 流程:

<file:connector name="input" doc:name="input" autoDelete="false" />
<flow name="flow1">
    <file:inbound-endpoint connector-ref="input" responseTimeout="10000" doc:name="input" path="C:\test" pollingFrequency="100000" />
    <file:filename-wildcard-filter pattern="prod.xml" />
    <set-variable variableName="tempid" value="150" doc:name="Variable" />
    <foreach doc:name="For Each" collection="#[xpath3('//marketingdetailslist/marketdetails/*', payload, 'NODESET' )]">
        <enricher source="#[flowVars.tempid]" target="#[xpath3('//marketdetails/target')]" >
        <logger message="inside  enricher ~~~~~#[message.payloadAs(java.lang.String)]"  level="INFO" doc:name="Logger"/>
        </enricher>
    </foreach>

    <logger message="after enrichment  response~~~~~~.......#[message.payloadAs(java.lang.String)]"  level="INFO" doc:name="Logger"/>

</flow>

接收此 XML 作为输入:

<marketingdetailslist>
       <marketdetails>
           <Jan>
               <target>100</target>
               <productname>Electronics</productname>               
           </Jan>
           <Feb>
              <target>50</target>
               <productname>Woodenitems</productname>
           </Feb>
       </marketdetails>
</marketingdetailslist>

这将是预期的输出,值会发生变化:

<marketingdetailslist>
       <marketdetails>
           <Jan>
               <target>150</target>
               <productname>Electronics</productname>               
           </Jan>
           <Feb>
              <target>150</target>
               <productname>Woodenitems</productname>
           </Feb>
       </marketdetails>
</marketingdetailslist>

我无法获得预期的输出。为了实现这一目标,我需要对流程进行哪些更改?

【问题讨论】:

  • 你试过#[xpath3('./target')]吗?
  • 什么是 #[xpath3('./target')] ?你能告诉流程吗

标签: xml foreach mule


【解决方案1】:

您似乎正在尝试使用一组消息处理器来模拟XSL-T Transformer。您可能会成功,但使用 XSL-T 会更好,因为它是为执行这种转换而设计的。

【讨论】:

  • 我的要求不需要 XSL-T Transformer 。上述流程需要进行一些更正。
  • 有可能将 XML 加载到 DOM 中并改变内存中的 DOM 元素,以便在程序上执行您想要的更改。但这类似于以笨拙的方式重新创建 XSL-T……最好为正确的工作使用正确的工具。
  • 但我的要求是这样的。任何人都可以阐明我的流程中需要更改的内容。
猜你喜欢
  • 2015-07-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-16
  • 2014-10-18
  • 1970-01-01
相关资源
最近更新 更多