Iterator只获得JavaFX中的第一个Element

时间:2016-01-14 19:06:36

标签: java xml iterator jdom-2

我想知道为什么我的Iterator只能从XML阅读器获取List时获取第一个元素

我的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 个答案:

答案 0 :(得分:2)

假设rootNode是您文档的根,那么

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

将返回包含Genre节点的大小为1的列表。

迭代此列表当然只会在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();
     ...
}