Во-первых, большое спасибо за вашу помощь заранее!
Я хочу обрабатывать большой xml файл (10 МБ) параллельно, транслируя вхождения по одному. xml выглядит следующим образом:
<?xml version="1.0" encoding="UTF-8"?>
<PFA date="202002072200" type="daily">
<CountryList>
<CountryName code="AARCT" name="Antarctica" IsTerritory="True" />
<CountryName code="ABKHAZ" name="Abkhazia" IsTerritory="True" />
...
</CountryList>
<OccupationList>
<Occupation code="1" name="Occupation 1" />
<Occupation code="2" name="Occupation 2" />
...
</<OccupationList>
</PFA>
Есть больше группирующих тегов, но для простоты позвольте мне уменьшить его до двух.
Я хочу отправить каждый набор предметы на разные конечные точки, и потреблять их предмет за предметом. На данный момент я просто хочу записать их в журнал.
Я пробовал использовать следующие фрагменты, но для обоих фрагментов в журналах отображается только первая группа.
from("file:/route/to/my/dir")
.split(xpath("//PFA/CountryList/CountryName"))
.streaming().log("Country ${headers.CamelSplitIndex} contains: ${body}")
.split(xpath("//PFA/OccupationList/Occupation"))
.streaming().log("OccupationList ${headers.CamelSplitIndex} contains: ${body}")
, а также:
from("file:/home/dalonso/Documentos/documentos/normalizador")
.choice()
.when(xpath("//PFA/CountryList"))
.to("direct:countriesRoute")
.when(xpath("//PFA/OccupationList"))
.to("direct:occupationsRoute");
from("direct:countriesRoute").split(xpath("//PFA/CountryList/CountryName")).streaming()
.log("Country ${headers.CamelSplitIndex} contains: ${body}").end();
from("direct:occupationsRoute").split(xpath("//PFA/OccupationList/Occupation")).streaming()
.log("OccupationList ${headers.CamelSplitIndex} contains: ${body}").end();
У кого-нибудь есть идеи о том, как ее решить. Я предполагаю, что это должно быть что-то очень тривиальное, но я не могу найти что-нибудь около inte rnet.
Спасибо за ваше время.