Для входного XML, например:
<FlightOptions>
<item>
<Fares>
<item>
<FareClass>A</FareClass>
<Fare>100</Fare>
<FareType>E</FareType>
<Seats>5</Seats>
</item>
<item>
<FareClass>B</FareClass>
<Fare>200</Fare>
<FareType>E</FareType>
<Seats>10</Seats>
</item>
<item>
<FareClass>C</FareClass>
<Fare>250</Fare>
<FareType>E</FareType>
<Seats>20</Seats>
</item>
<item>
<FareClass>N</FareClass>
<Fare>100</Fare>
<FareType>F</FareType>
<Seats>5</Seats>
</item>
<item>
<FareClass>M</FareClass>
<Fare>200</Fare>
<FareType>F</FareType>
<Seats>50</Seats>
</item>
<item>
<FareClass>O</FareClass>
<Fare>300</Fare>
<FareType>F</FareType>
<Seats>20</Seats>
</item>
</Fares>
<Flight>
<FlightNumber>YY232</FlightNumber>
<Origin>JFK</Origin>
<Destination>LHR</Destination>
<DepTime>1300</DepTime>
<ArrTime>2000</ArrTime>
</Flight>
</item>
</FlightOptions>
Для вышеупомянутого XML мне нужно сохранить только несколько узлов Fares / item, где я сначала группирую по FareType (E и F), и сохраняю элементы, начиная ссамый дешевый тариф, но остановка, если количество мест>> 9. Например, поскольку у А всего 5 мест, мне нужно выбрать следующий самый высокий тариф Б, но не С. Кроме того, если количество мест> = 9, мне нужно ограничитьэто до 9.
Я могу сделать группу и отсортировать, но не могу пройти тарифы и применить логику, чтобы выбрать тарифы, пока число мест <= 9 для этого FareType.Другая сложность заключается в том, что выходной XML должен переупорядочить значения Fares / items таким образом, чтобы узлы FareType E находились вначале в порядке убывания Fare, за которым следовал узел N (если он присутствует в источнике), а затем другие узлы FareType F в порядке убыванияТариф. </p>
Выходной XML будет выглядеть так:
<FlightOptions>
<item>
<Fares>
<item>
<FareClass>B</FareClass>
<Fare>200</Fare>
<FareType>E</FareType>
<Seats>9</Seats>
</item>
<item>
<FareClass>A</FareClass>
<Fare>100</Fare>
<FareType>E</FareType>
<Seats>5</Seats>
</item>
<item>
<FareClass>N</FareClass>
<Fare>100</Fare>
<FareType>F</FareType>
<Seats>5</Seats>
</item>
<item>
<FareClass>M</FareClass>
<Fare>200</Fare>
<FareType>F</FareType>
<Seats>9</Seats>
</item>
</Fares>
<Flight>
<FlightNumber>YY232</FlightNumber>
<Origin>JFK</Origin>
<Destination>LHR</Destination>
<DepTime>1300</Deptime>
<ArrTime>2000</ArrTime>
</Flight>
</item>
<FlightOptions>
Я пытался прочитать примеры мюнхенской группировки, но у меня возникли проблемы с пониманием того, как подать заявку вместе с преобразованием идентичности (так как мне нужносохранить структуру Полёта вместе с узлами Тарифы / предметы).
Спасибо!