我的inputXML:
<Orders>
<Order><OrderId>1</OrderId><Total>10</Total></Order>
<Order><OrderId>2</OrderId><Total>20</Total></Order>
<Order><OrderId>3</OrderId><Total>30</Total></Order>
<Order><OrderId>4</OrderId><Total>40</Total></Order>
<Order><OrderId>5</OrderId><Total>50</Total></Order>
<Order><OrderId>5</OrderId><Total>60</Total></Order>
<Order><OrderId>5</OrderId><Total>70</Total></Order>
<Order><OrderId>5</OrderId><Total>80</Total></Order>
<Order><OrderId>5</OrderId><Total>90</Total></Order>
</Orders>
我需要从File中读取这个输入XML。并且需要根据以下条件将其写入不同的文件
/Orders/Order/Total==10 then write this record to file1.
/Orders/Order/Total>10 and /Orders/Order/Total<=40 then write the records to file2.
/Orders/Order/Total>40 then write the records to file3.
我的档案1 o / p(预期):
<OrderId>1</OrderId><Total>10</Total>
我的档案2 o / p(预期):
<OrderId>2</OrderId><Total>20</Total>
<OrderId>3</OrderId><Total>30</Total>
<OrderId>4</OrderId><Total>40</Total>
我的档案3 o / p(预期):
<OrderId>5</OrderId><Total>50</Total>
<OrderId>6</OrderId><Total>60</Total>
<OrderId>7</OrderId><Total>70</Total>
.
.
.
我对Mule ESB有点新意。我对骡子的转换和转换感到困惑。
有人可以建议在我的骡子流中使用最好的分裂和聚合策略和组件。也可以在组件中使用配置..
请注意,这是一个输入XML示例。我实时需要处理大型XML文件。所以建议最好的解决方案。提前致谢!
答案 0 :(得分:0)
使用for each
组件并迭代到每个Order元素。提示:使用xpath。例如,将其放在集合字段#[xpath3('//*:Orders//*:Order', payload, 'NODESET')]
在for each
内,添加具有这些条件的选择组件。显然,也可以在这里使用xpath。例如,在组件#[Integer.parseInt(xpath3('.//Total',payload)) > 40]
在每个选项的选项上,放置一个DOM to XML
组件将order元素设置为payload,然后添加Object to String
组件。链上的最后一个是文件写/附加逻辑,它可以是java变换器或表达式组件。 (更好的选择是使用StringBuilder,您只需附加每个订单,然后在for each
组件之后保存3个文件。)
希望你了解Java所以最后一部分是有道理的。