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

XPath技术问询:如何选择节点但排除其子节点

解决XPath选择节点但排除子节点的问题

你的核心问题是:通过XPath选中<Header>节点后,该节点本身包含所有子节点,直接输出会连带子节点一起打印。要得到仅保留节点标签和属性、不含子节点的结果,需要在获取节点后清空其所有子节点,再输出。

修正后的代码实现

Document xmlDoc = saxBuilder.build(inputStream);
XPath x = XPath.newInstance("/Header");
Element eleMyElement = (Element) x.selectSingleNode(xmlDoc);

// 清空Header节点下的所有子节点
eleMyElement.removeContent();

XMLOutputter output = new XMLOutputter();
String result = output.outputString(eleMyElement);
// 此时result即为期望的:<Header attr1="Hello"> </Header>

原理说明

  • XPath的/Header表达式确实会选中整个<Header>节点,而DOM节点本身会包含其所有子节点(元素、文本节点等),所以直接输出会连带子节点。
  • 调用Element.removeContent()方法可以移除该节点下的所有子节点和文本内容,只保留节点本身的标签和属性。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.23 05:33:17