【发布时间】:2013-11-04 12:51:26
【问题描述】:
我想在 Java 中使用 for-each 循环遍历 NodeList。我让它与一个 for 循环和一个 do-while 循环一起工作,但不是 for-each。
NodeList nList = dom.getElementsByTagName("year");
do {
Element ele = (Element) nList.item(i);
list.add(ele.getElementsByTagName("MonthId").item(0).getTextContent());
i++;
} while (i < nList.getLength());
NodeList nList = dom.getElementsByTagName("year");
for (int i = 0; i < nList.getLength(); i++) {
Element ele = (Element) nList.item(i);
list.add(ele.getElementsByTagName("MonthId").item(0).getTextContent());
}
【问题讨论】:
-
您不能对 NodeList 使用 foreach 循环,因为它没有实现 Iterable 接口。唯一的选择是使用 nodeList.getLength 来使用 for 或 while 循环。 docs.oracle.com/javase/7/docs/api/org/w3c/dom/NodeList.html
-
虽然这与您提出的问题无关,但我会回避使用 Java 标准库中的 w3c 内容。 IMO 这是一团糟,那里有更好的 XML 解析库。
-
+Jazzepi 我知道这是老话题,但您建议使用哪个 XML 解析库?注意这个 w3c 库不提供简单和通用的迭代器这一事实是一个“细节”,但看起来像是反对这些东西的另一个论据(即使库的选择可能比这一点更复杂)。