在Java中将NodeList转换为List

时间:2018-05-24 12:37:11

标签: java xml

我需要将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的任何线索都会有所帮助。

2 个答案:

答案 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;
  }