мне нужна ваша помощь в следующем вопросе:Сортировка JDOM элементов с использованием Java API
В моем коде у меня есть список элементов, мне нужно отсортировать этот список по 2 признакам: сезон и номер.
Список примеров:
<episode_list>
<episode id="280" number="13" season="1">
<title><![CDATA[Bowl Game]]></title>
</episode>
<episode id="314" number="12" season="1">
<title><![CDATA[Piss Test]]></title>
</episode>
<episode id="730" number="11" season="1">
Я использую Collections.sort(), но получаю исключение. Как я понимаю, что я не могу использовать его с JDOM элементов:
List<Element> episodes;
Collections.sort(episodes, new Comparator<Element>() {
@Override
public int compare(Element elem1, Element elem2) {
Integer seasonNumber1 = Integer.valueOf(myService.valueOfAttribute("season", elem1));
Integer seasonNumber2 = Integer.valueOf(myService.valueOfAttribute("season", elem2));
int seasonComp = seasonNumber1.compareTo(seasonNumber2);
if (seasonComp != 0) {
return seasonComp;
} else {
Integer episodeNumber1 = Integer.valueOf(myService.valueOfAttribute("number", elem1));
Integer episodeNumber2 = Integer.valueOf(myService.valueOfAttribute("number", elem2));
return episodeNumber1.compareTo(episodeNumber2);
}
}
});
Exception: java.util.Collections$UnmodifiableList$1.set(Unknown Source)
java.util.Collections.sort(Unknown Source)
На самом деле мне не нужен отсортированный XML, единственное, что мне нужно, это атрибут эпизод «идентификатор» (для самого низкого сезона и самый низкий эпизод номер).
Что вы можете порекомендовать? У меня есть другая реализация, в которой я просматриваю все элементы, но я не думаю, что это хорошее решение ... Я также могу создать Java-класс Episode (id, episode, season), преобразовать список в список и отсортировать его, но также не думайте, что это хорошая идея. Существует также метод sortContent для Element, но я не уверен, как его реализовать.
Буду признателен за любую помощь.
Спасибо! Я просто решил пройти через все элементы, так как мне не нужен весь xml, отсортированный. – user2101310
Для людей, которые застряли в JDOM 1, самым простым способом является получение списка с помощью element.removeContent(), затем сортировка, а затем использование setContent() или addContent() для его возврата. – Trejkaz