我有组织。w3c。dom。具有5个节点的节点列表。UUID生成的节点ID。随机UUID()
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的节点。
我创建了流
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流API来实现这一点吗?
我们决定对此任务使用XPath。看起来好多了:
private static final String EXPRESSION_TEMPLATE = "//*[@%s='%s']";
private static final String ID_ATTR = "id";
// some code here
@Override
public NodeList lookupSiblingsAfterId(Element aRootElement, String id) {
try {
if (null == id) {
throw new IllegalArgumentException("Invalid id parameter");
}
return (NodeList)xpath.newXPath().evaluate(String.format(EXPRESSION_TEMPLATE, ID_ATTR, id) + "[last()]/following-sibling::*", aRootElement, XPathConstants.NODESET);
} catch (XPathExpressionException e) {
LOGGER.error("Can't evaluate XPath expression", e);
throw new RuntimeException(e);
}
}
我希望这对某人有帮助。
不幸的是,DOM API不能很好地与其他API配合使用。在前面的回答中,我提供了一个有用的轻量级列表包装器。
有了这个,你可以简单地做:
List<Node> list = XmlUtil.asList(element.getChildNodes());
list = list.subList(
list.indexOf(element.getOwnerDocument().getElementById("value5"))+1, list.size());
Stream<Element> stream = list.stream()
.filter(Element.class::isInstance).map(Element.class::cast);
或
List<Node> list = XmlUtil.asList(element.getChildNodes());
Stream<Element> stream = IntStream.range(
list.indexOf(element.getOwnerDocument().getElementById("value5"))+1, list.size())
.mapToObj(list::get).filter(Element.class::isInstance).map(Element.class::cast);
你的问题很令人困惑。但如果只需要在具有特定属性的元素之后获取节点,并且这些节点是有序的,则可以尝试按属性过滤元素:
public List<Element> filterElements(NodeList items, int attributeStart){
List<Element> result = IntStream.range(0, items.getLength())
.mapToObj(children::item)
.filter(Element.class::isInstance)
.map(Element.class::cast)
.filter(e -> Integer.parseInt(e.getAttribute("id")) > attributeStart)
.collect(Collectors.toList());
return result;
}
我有一个SVG文档,其中包含类似于以下内容的节点: 我想做的只是选择
你们这些家伙,我有这样一个HTML: 这是将上述所有选项放入列表的代码: 实际上它不起作用。我不知道我错在哪里。请帮帮我。非常感谢。
我使用Neo4j(版本3.4.1)和Spring-data-neo4j(5.0.10)。RELEASE)在我的应用程序中。我也在使用OGM。 我的节点之间有以下关系: 车辆(V)具有部件(P1和P2)。零件可从经销商处购买(D1、D2和D3)。零件本身可以相互链接(例如P2与P1链接) 我正在尝试编写一个密码查询,以获取与id匹配的零件节点。我希望获取该节点及其相关节点和关系。 下面是我的查询:
问题内容: 关闭。 此问题不符合堆栈溢出准则。它当前不接受答案。 想改善这个问题吗? 更新问题,使其成为Stack Overflow 的主题。 6年前关闭。 我的mySQL数据库中有如下表: 对于谓词,它将具有如下树视图: 我想创建一个可以选择起始节点并为此获得所有父节点的表单。例如,通过选择我想要获得: 步骤2: 有什么方法可以使用以下简单文本来打印此节点: 问题答案: 您的数据可以在RDF中表
我有一棵看起来像上面的树,由一个链接结构表示: 我的目标是找到从根节点到叶节点的所有路径。 我的树遍历算法如下所示: 当我运行它时,我确信树正在按图所示构建。我已经测试过了。然而,我无法找出我的树遍历分割错误的原因。 我得到的输出是: 我已经在高度较小的树上测试了它,它是有效的。但是出于某种原因,它不适用于高度大于2的树。我认为这是树出了问题,我检查并打印了每个父级、左子级和右子级,它们打印出来如
这是我的XML源: https://www.ecb.europa.eu/stats/eurofxref/eurofxref-daily.xml 如何获取DKK(丹麦克朗)的最新汇率? 我不想使用foreach并检查货币是否为DKK... 我需要这样的东西: 知道怎么解决这个问题吗?