Разделить XML-файл на верблюде с помощью .split().tokenizeXML()?

Как разбить XML-файл на верблюде с помощью .split().tokenizeXML()? Я прикрепил фрагмент кода. Я не знаю, где я сделал ошибку. Вот мой вклад.

<Record>
  <DataFile xmlns="Created">
  </DataFile>
  <DataFile xmlns="Updated">
  </DataFile>
  <DataFile xmlns="Deleted">
  </DataFile>
</Record>

Вот мой верблюжий маршрут

// Main Route
from(...)
.routeId("processor route")
.process(...)
.to("direct:created",
"direct:updated",
"direct:deleted").end();

// Created
from("direct:created")
.routeId("created route")
.split().tokenizeXML("xmlns:Created", "Record")
.to(...).end();

// Updated
from("direct:updated")
.routeId("updated route")
.split().tokenizeXML("xmlns:Updated", "Record")
.to(...).end();

// Deleted
from("direct:deleted")
.routeId("deleted route")
.split().tokenizeXML("xmlns:Deleted", "Record")
.to(...).end();

мой ожидаемый результат: ... direct:created следует разделить и использовать только этот.

<DataFile xmlns="Created">
</DataFile>

direct:update должен разделиться и использовать только этот.

<DataFile xmlns="Updated">
</DataFile>

и direct:deleted следует разделить и использовать только этот.

<DataFile xmlns="Deleted">
</DataFile> 

person Naveenkumar    schedule 25.04.2015    source источник


Ответы (2)


Вы не можете разделить пространство имен, используя tokenizeXml. Вам нужно будет разделить файл самостоятельно или написать код, который может быть разделен по пространству имен.

person Claus Ibsen    schedule 25.04.2015
comment
Спасибо... Есть ли в верблюде dsl какой-либо другой вариант разделения XML такого типа? - person Naveenkumar; 27.04.2015

Я не знаю, как получить значение атрибута «xmlns» в XPath, потому что «xmlns» — это атрибут NameSpace. Если вы можете изменить имя этого атрибута, например, на "атрибут" вы можете использовать примерно так:

Сначала разделите xml на список элементов «DataFile», затем используйте маршрутизацию на основе содержимого, используя значение «атрибут» («атрибут», потому что я не знаю, как получить значение атрибута «xmlns» в XPath — вы можете найти это самостоятельно и попробуйте)

from("direct:route").split().tokenizeXML("DataFile").streaming().choice()
    .when().xpath("//DataFile[@attribute=&#39;Created&#39;]").to("direct:created")
    .when().xpath("//DataFile[@attribute=&#39;Updated&#39;]").to("direct:updated")
    .otherwise().to("direct:deleted")
person dey    schedule 27.04.2015