Возможно ли объединить несколько небольших XML-документов:
<doc><field name="XXX">fieldValue</field><doc>
с использованием aggregator2 (верблюд 2.7.0) в один большой документ
<result><doc>...</doc><doc>...</doc><doc>...</doc>...<doc>...</doc></result>
без использования какого-либо специального процессора-агрегатора?Мне удалось завершить создание собственного агрегатора, но теперь я упрощаю свой код, поэтому хотел бы избавиться от него, если верблюд поддерживает это из коробки.
Мой настраиваемый агрегатор выглядит следующим образом:
class DocsAggregator implements Processor {
void process(Exchange exchange) {
def builder = DocumentBuilderFactory.newInstance().newDocumentBuilder()
def Document parentDoc = builder.parse(new ByteArrayInputStream("<?xml version='1.0'?><add></add>".toString().bytes));
def groupedExchanges = exchange.properties.find {it.key == 'CamelGroupedExchange'}
groupedExchanges.value.each { Exchange x ->
def Document document = x.'in'.body
def bos = new ByteArrayOutputStream()
TransformerFactory.newInstance().newTransformer().transform(new DOMSource(document), new StreamResult(bos))
def node = document.documentElement.childNodes.find { Node it -> it.nodeType == Node.ELEMENT_NODE}
def cloned = parentDoc.adoptNode(node)
parentDoc.documentElement.appendChild(cloned)
}
exchange.in.body = parentDoc
}
}