You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Java中如何遍历所有匹配同一XPath表达式的节点

实现XPath多匹配节点遍历的方法

你当前使用XPathConstants.STRING作为返回值类型时,evaluate方法只会返回第一个匹配节点的文本内容,无法拿到全部匹配结果。要实现遍历所有匹配节点的逻辑,只需要将返回类型修改为XPathConstants.NODESET拿到节点集合,再遍历集合即可。

完整实现代码

import org.w3c.dom.Node;
import org.w3c.dom.NodeList;
import javax.xml.xpath.XPath;
import javax.xml.xpath.XPathConstants;
import javax.xml.xpath.XPathFactory;

// 初始化XPath实例
XPath xPath = XPathFactory.newInstance().newXPath();
// 传入NODESET常量,获取所有匹配路径的节点集合
NodeList matchedNodes = (NodeList) xPath.evaluate("something/fruit/colour", xmlDocument, XPathConstants.NODESET);

// 遍历所有匹配节点,对应你需要的foreach逻辑
for (int i = 0; i < matchedNodes.getLength(); i++) {
    Node currentNode = matchedNodes.item(i);
    // 读取当前节点的文本值
    String currentValue = currentNode.getTextContent();
    // 打印节点值
    System.out.println(currentValue);
}

运行效果

针对你给出的XML示例,上述代码会依次输出:

red
blue
green

注意事项

  • XPathConstants.STRING类型仅适合明确知道只有一个匹配节点的场景,多节点场景下永远只会返回第一个匹配项的内容
  • 遍历得到的Node对象支持标准DOM操作,你可以根据需要读取节点属性、父节点、子节点等内容,不局限于取文本值

内容的提问来源于stack exchange,提问作者Talktomegoose

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.30 23:27:29