Я работаю с приложением, которое обрабатывает XML-файл, который содержит большое количество заказов.Для управления количеством заказов я решил создать файлы, которые содержат каждые 1000 заказов.Для разделения файла я использовал перегруженный метод TokenizeXML, который наследует тег пространства имен, но это решение не решило мою проблему, поскольку TokenizeXML наследует пространство имен для каждого дочернего порядка, а не переносит весь файл.Я просто хочу знать, существует ли решение без использования пользовательской стратегии агрегирования.
Пример: input
<foo:namespace xmnls:foo="http://foo.com">
<MessageInfo>
<dateTime>20180127T0253-0500</dateTime>
<id>20180127T0253-0500</id>
</MessageInfo>
<orders>
<order>
<name>source1</name>
</order>
<order>
<name>source2</name>
</order>
<order>
<name>source3</name>
</order>
<order>
<name>source4</name>
</order>
</orders>
</foo:namespace>
Пример маршрута, который создает 2 файла с 2 заказами
from("{{input}}")
.split().tokenizeXML("order","*",2)
.process(setOutputName)
.to("{{JmsOutput}}");
Результат:
Файл1
<foo:namespace xmnls:foo="http://foo.com">
<MessageInfo>
<dateTime>20180127T0253-0500</dateTime>
<id>20180127T0253-0500</id>
</MessageInfo>
<orders>
<order>
<name>source1</name>
</order>
</orders>
</foo:namespace>
<foo:namespace xmnls:foo="http://foo.com">
<MessageInfo>
<dateTime>20180127T0253-0500</dateTime>
<id>20180127T0253-0500</id>
</MessageInfo>
<orders>
<order>
<name>source2</name>
</order>
</orders>
</foo:namespace>
Ожидание:
Файл1
<foo:namespace xmnls:foo="http://foo.com">
<MessageInfo>
<dateTime>20180127T0253-0500</dateTime>
<id>20180127T0253-0500</id>
</MessageInfo>
<orders>
<order>
<name>source1</name>
</order>
<order>
<name>source2</name>
</order>
</orders>
</foo:namespace>