Devendra Tripathi created CAMEL-12091:
-----------------------------------------
Summary: Splitting large Xml files using Camel by having root
tags. inheritNamespaceTagName="*" not working as expected.
Key: CAMEL-12091
URL: https://issues.apache.org/jira/browse/CAMEL-12091
Project: Camel
Issue Type: Improvement
Components: camel-bindy, camel-core, camel-jaxb, camel-spring,
camel-stax
Affects Versions: 2.19.1
Reporter: Devendra Tripathi
Priority: Critical
Hi,
Tried splitting large xml files into 10-10 elements each which has suppose 100
elements (say <ItemType>) with root tag as <ItemImport>. All 10 new splitted
xml should have one root tag <ItemImport> on top as in original xml. Example
below.
<ItemImport Priority="0" FillType="FullIncremental" Version="1.0">
<ItemType> </ItemType>
<ItemType> </ItemType>
<ItemType> </ItemType>
<ItemType> </ItemType>
<ItemType> </ItemType>
....
</ItemImport>
*+Output needed:+*
1. xml:
<ItemImport Priority="0" FillType="FullIncremental" Version="1.0">
<ItemType> </ItemType>
<ItemType> </ItemType>
<ItemType> </ItemType>
</ItemImport>
2. xml:
<ItemImport Priority="0" FillType="FullIncremental" Version="1.0">
<ItemType> </ItemType>
<ItemType> </ItemType>
<ItemImport>
+*written XML DSL as below:*+
<camel:route id="splitFiles">
<camel:from uri="file://{{immediateProcessingfolder}}" />
<camel:split streaming="true">
<camel:tokenize token="${header.TokenName}"
inheritNamespaceTagName="*" xml="true" group="10"/>
<!-- <camel:xtokenize
mode="w">//ns1:Item</camel:xtokenize> -->
<camel:to uri="file://{{outputfolder}}" />
</camel:split>
</camel:route>
If using inheritNamespaceTagName="*", its not giving proper output as per
expectation. Root tag is coming for all the elements in a single xml file, in
this example 10 times root element "ItemImport" for each ItemType element.
1. xml:
<ItemImport Priority="0" FillType="FullIncremental" Version="1.0">
<ItemType> </ItemType>
</ItemImport>
<ItemImport Priority="0" FillType="FullIncremental" Version="1.0">
<ItemType> </ItemType>
</ItemImport>
<ItemImport Priority="0" FillType="FullIncremental" Version="1.0">
<ItemType> </ItemType>
</ItemImport>
2. xml:
<ItemImport Priority="0" FillType="FullIncremental" Version="1.0">
<ItemType> </ItemType>
</ItemImport>
<ItemImport Priority="0" FillType="FullIncremental" Version="1.0">
<ItemType> </ItemType>
<ItemImport>
Let me know if any other detail is needed. Or if solution is already present.
Also tried using stax by following below link, but it did not generated any
output, even though I did not get any error.
http://camel.apache.org/stax.html
<bean id="staxRecord"
class="org.apache.camel.component.stax.StAXBuilder" factory-method="stax">
<constructor-arg index="0"
value="com.input.model.item.ItemType" />
</bean>
<camel:route>
<!-- pickup XML files -->
<camel:from uri="file://{{immediateProcessingfolder}}" />
<camel:split streaming="true">
<camel:ref>staxRecord</camel:ref>
<camel:to uri="file://{{outputfolder}}" />
</camel:split>
</camel:route>
Thanks,
Devendra
--
This message was sent by Atlassian JIRA
(v6.4.14#64029)