【发布时间】:2012-05-05 07:37:35
【问题描述】:
我已经提取了节点列表,例如,
this.NodeList xml = doc.getElementsByTagName(tagName)
现在我想把 xml 转换成 ArrayList 类型,有什么建议吗?
【问题讨论】:
我已经提取了节点列表,例如,
this.NodeList xml = doc.getElementsByTagName(tagName)
现在我想把 xml 转换成 ArrayList 类型,有什么建议吗?
【问题讨论】:
关于 Java
从 Java 8 开始,您可以使用 IntStream 和 map,其中 nodeList 是 NodeList 的实例:
List<String> nodeNames = IntStream.range(0, nodeList.getLength())
.mapToObj(nodeList::item)
.map(n -> n.getNodeName())
.collect(Collectors.toList());
这会将节点的名称收集到一个列表中。
为了更通用的目的,您可以收集Node 元素然后对其进行处理:
List<Node> nodes = IntStream.range(0, nodeList.getLength())
.mapToObj(nodeList::item)
.collect(Collectors.toList());
请注意,从 Java 10 开始,您也可以只使用 var 而不是 List<Node>:
var nodes = IntStream.range(0, nodeList.getLength())
.mapToObj(nodeList::item)
.collect(Collectors.toList());
【讨论】:
var nodeArrayList = new ArrayList(xmlNodeList.OfType<XmlNode>().ToList());
【讨论】:
ArrayList 而不是 List<XmlNode>。
ArrayList 是List<something> 的实现,但并没有太大的优势。与此相关的有趣答案stackoverflow.com/a/391257/448232。