我需要将NodeList转换为List,以便在List上返回迭代器。
我的要求是返回NodeSetData对象,迭代器方法必须在org.w3c.dom.Node类型的对象上返回迭代。
我有一个NodeList,其中包含需要返回的所有节点的列表。为了返回Iterator,我需要将NodeList转换为List。
我查看了一堆stackoverflow答案,但大多数都与NodeList到String的转换有关。
这是将用于返回迭代器的函数。
return new NodeSetData() {
public Iterator iterator() {
return l.iterator();
};
};
关于如何将NodeList转换为List的任何线索都会有所帮助。
答案 0 :(得分:1)
您可以通过匿名类实现。
return new NodeSetData() {
@Override
public Iterator iterator() {
return new Iterator() {
private int i = 0;
@Override
public boolean hasNext() {
return nodeList.getLength() < i;
}
@Override
public Node next() {
return nodeList.item(i++);
}
};
}
};
答案 1 :(得分:0)
由于这可能对其他人有用,因此下面是一个简单的函数:
public static List<Element> getElements(final NodeList nodeList) {
final int len = nodeList.getLength();
final List<Element> elements = new ArrayList<>(len);
for (int i = 0; i < len; i++) {
final Node node = nodeList.item(i);
if (node.getNodeType() == Node.ELEMENT_NODE) {
elements.add((Element) node);
}
// Ignore other node types.
}
return elements;
}