Итератор получает только первый элемент в JavaFX

Мне интересно, почему мой итератор получает только первый элемент при получении через список от читателя XML

Мой XML-файл:

<Genre>
    <Name>Horror</Name>
    <Name>Action</Name>
    <Name>Kinderfilm</Name>
    <Name>Komödie</Name>
    <Name>Splatter</Name>
 </Genre>

Мой Java-код:

List list = rootNode.getChildren("Genre");

System.out.println("Count Genre: " + list.size());
Iterator i = list.iterator();

while (i.hasNext()) {
   Element gen = (Element) i.next();
   String name = gen.getChildText("Name");
   System.out.println("NAME: " + name);
   genre.add(name);
}

Он получает только один элемент (ужас)

Надеюсь, кто-нибудь может мне помочь. перфорация

1 ответ

Решение

При условии, что rootNode является корнем вашего документа, то

List list = rootNode.getChildren("Genre");

вернет список с размером 1, связавшись с Genre узел.

Итерирование этого списка будет, конечно, только один раз проходить по телу while, с gen указывая на Genre элемент.
призвание gen.getChildText("Name") на этом узле вернется текстовое содержимое первого дочернего элемента с именем Name, возвращаясь Horror,

Что вы, вероятно, хотите сделать:

Element genre = rootNode.getChild("Genre");

Iterator<Element> names = genre.getChildren("Name").iterator();
while (names.hasNext()) {
     String name = names.next().getText();
     ...
}
Другие вопросы по тегам