gpt4 book ai didi

java - 如何在java中使用XPath获取节点的每个后代?

转载 作者:行者123 更新时间:2023-12-01 23:23:17 26 4
gpt4 key购买 nike

我正在使用此代码,但我不确定 XPath 表达式应该是什么样子。

XPath xpath = XPathFactory.newInstance().newXPath();
XPathExpression expression = xpath.compile("XXXX");
NodeList nodes = (NodeList) expression.evaluate(doc.getDocumentElement(), XPathConstants.NODESET);

假设有一棵树:

<animal>
<big>
<elephant>
<white_elephant>

</white_elephant>
</elephant>
</big>
<small>
</small>
</animal>

我想让节点的每个后代都变大:(elephant, white_elephant) + big 本身

最佳答案

您可以使用descendant-or-self轴:

XPath xpath = XPathFactory.newInstance().newXPath();
XPathExpression expression = xpath.compile("//big/descendant-or-self::*");
NodeList nodes = (NodeList) expression.evaluate(doc.getDocumentElement(), XPathConstants.NODESET);

维基百科是了解不同轴概述的一个很好的来源:http://en.wikipedia.org/wiki/XPath#Axis_specifiers

编辑:正如 Jens Erat 在评论中提到的,您可以将 /descendant-or-self:: 缩短为 // - 这只是一个缩写:

XPathExpression expression = xpath.compile("//big//*");

关于java - 如何在java中使用XPath获取节点的每个后代?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20385247/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com