我可以在Java中使用for-each遍历NodeList吗?

我想NodeList在Java中使用for-each循环进行迭代。我有一个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());

}

回答:

此问题的解决方法很简单,值得庆幸的是,您只需实现一次即可。

import java.util.*;

import org.w3c.dom.*;

public final class XmlUtil {

private XmlUtil(){}

public static List<Node> asList(NodeList n) {

return n.getLength()==0?

Collections.<Node>emptyList(): new NodeListWrapper(n);

}

static final class NodeListWrapper extends AbstractList<Node>

implements RandomAccess {

private final NodeList list;

NodeListWrapper(NodeList l) {

list=l;

}

public Node get(int index) {

return list.item(index);

}

public int size() {

return list.getLength();

}

}

}

在将此实用程序类添加到项目中并staticimportXmlUtil.asList源代码添加方法的后,您可以像这样使用它:

for(Node n: asList(dom.getElementsByTagName("year"))) {

}

以上是 我可以在Java中使用for-each遍历NodeList吗? 的全部内容, 来源链接: utcz.com/qa/409739.html

回到顶部