2016-05-25 12 views
0

私はエントリのセットを持つXMLファイルを持っている:集約XMLブロック

<PurchaseOrder PurchaseOrderNumber="99503" OrderDate="1999-10-20"> 
    <Address Type="Shipping"> 
     <Name>Ellen Adams</Name> 
     <Street>123 Maple Street</Street> 
     <City>Mill Valley</City> 
     <State>CA</State> 
     <Zip>10999</Zip> 
     <Country>USA</Country> 
    </Address> 
     <Item PartNumber="872-AA"> 
     <ProductName>Lawnmower</ProductName> 
     <Quantity>1</Quantity> 
     <USPrice>148.95</USPrice> 
     <Comment>Confirm this is electric</Comment> 
     </Item> 
    </PurchaseOrder> 
    <PurchaseOrder PurchaseOrderNumber="99505" OrderDate="1999-10-22"> 
    <Address Type="Shipping"> 
     <Name>Cristian Osorio</Name> 
     <Street>456 Main Street</Street> 
     <City>Buffalo</City> 
     <State>NY</State> 
     <Zip>98112</Zip> 
     <Country>UK</Country> 
    </Address> 
     <Item PartNumber="456-NM"> 
     <ProductName>Power Supply</ProductName> 
     <Quantity>1</Quantity> 
     <USPrice>45.99</USPrice> 
     </Item> 
    </PurchaseOrder> 

を私の目的は、国ごとに異なるファイルのグループにすべての注文です。たとえば、us.xmlファイル内のすべての米国の注文。 私は(それが唯一のエントリの最後のグループがファイルorders.xmlに書き込まれますように)各グループのファイル名を指定する方法がわからないが、私は以下の集約戦略

<aggregate strategyRef="myAggregationStrategy" 
     completionSize="10" completionTimeout="500"> 
     <correlationExpression> 
      <xpath>/PurchaseOrder/Address/Country/text()</xpath> 
     </correlationExpression> 
     <to uri="file:/home/data/other?fileName=orders.xml" /> 
</aggregate> 

のために配置されています。 助けてください? ありがとう!

答えて

1

あなたが集約戦略で、たとえば、交換にヘッダーとしてXMLペイロードとストアから<Country>をつかむことができ、またはアグリゲータを呼び出す前に、あなたがsetHeaderを使用することができます:あなたが使用することができます

<setHeader name="country"> 
    <xpath>PurchaseOrder/Address/Country/text()</xpath> 
</setHeader> 

ザ・その米国、英国、それがどの国かを知るために必要なファイル名も計算する必要があります。

fileName=orders-${header.country}.xml 

とPSの心ストリーミングについて:http://camel.apache.org/why-is-my-message-body-empty.html

そして、あなたはその後、キャメルは、デフォルトでは、ファイルを上書きする同じファイル名に書き込む場合はところで、あなたはfileExist=Appendを使用して代わりに追加するように設定することができます。ドキュメントの詳細を参照してください:http://camel.apache.org/file2

+0

非常に明確で有益! – Carla