2016-01-14 2 views
0

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

Мой 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); 
} 

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

Надежда кто-то может помочь мне. Штамповка

ответ

2

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

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

возвращает список с размером 1 на Genre с указанным узлом.

Итерация этого списка, конечно, будет проходить только один раз через тело, с 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(); 
    ... 
} 
+0

Я предполагаю, что вы имели в виду, чтобы написать 'GetChildren ("Name")' вместо GetChildren ("имя") и 'GetText()' вместо GetText (» Имя")? – VGR

+0

@VGR да, спасибо – wero

+0

Спасибо, это было решение, (s.time я чувствую себя так f **** глупо) – Punching

Смежные вопросы