【发布时间】:2026-02-03 19:15:01
【问题描述】:
我有 org.w3c.dom.NodeList 有 5 个节点。 UUID.randomUUID();生成的节点id
Dom 结构:
<section id="3" prefix="s1">
<paragraph id="value3">
...
</paragraph>
<paragraph id="value4">
...
</paragraph>
<paragraph id="value5">
...
</paragraph>
<paragraph id="value6">
...
</paragraph>
<paragraph id="value7">
...
</paragraph>
</section>
我需要获取属性 id="value5" 的节点之后的所有节点。所以结果应该包含 id=value6 和 id=value7 的节点。
我创建了Stream<Element>:
NodeList children = element.getChildNodes();
Stream<Element> elementStream = IntStream.range(0, children.getLength())
.mapToObj(children::item)
.filter(Element.class::isInstance)
.map(Element.class::cast);
那么,我可以用 Java 8 Stream API 以某种方式做到这一点吗?
【问题讨论】:
-
尝试通过
attribute > 5过滤它们 -
@AndriiAbramov,id 是生成的值。我无法比较它们。
-
在 jdk-9 中你可以这样做:
.dropWhile(i -> i != 5).skip(1) -
@Eugene,谢谢。不幸的是,我们使用 jdk-8。
标签: java dom java-8 java-stream