【发布时间】:2012-09-11 07:12:18
【问题描述】:
我们有一个应用程序正在处理非常大的 xml 文件 (3GB+)。对于拆分,我们使用 Tokenizer。我们收到的 xml 有不同的命名空间前缀或根本不使用前缀。 Tokenizer 可以处理这个吗? 我发现的唯一一件事是使用 inheritNamespaceTagName 属性继承默认命名空间,但不幸的是,当使用命名空间前缀时它不起作用。
感谢您的帮助!
样本 1:
<foo:orders xmnls:foo="http://foo.com">
<foo:order id="1">Camel in Action</order>
<foo:order id="1">ActiveMQ in Action</order>
<foo:order id="1">DSL in Action</order>
</foo:orders>
示例 2:
<bar:orders xmnls:foo="http://foo.com">
<bar:order id="1">Camel in Action</order>
<bar:order id="1">ActiveMQ in Action</order>
<bar:order id="1">DSL in Action</order>
</bar:orders>
我们的路线:
<route id="orderProcessorRoute">
<from uri="file:process-xml?delete=true"/>
<split streaming="true">
<tokenize token="order" xml="true"/>
<to uri="bean:xmlParseBean"/>
<to uri="vm:orderAggregator"/>
</split>
<to uri="file:backup"/>
</route>
【问题讨论】:
-
您应该查看扩展的 vtd-xml 并使用它来拆分最大 256 GB 的 XML 文档。
标签: xml apache-camel xml-namespaces