Итератор получает только первый элемент в 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();
...
}