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

Java中如何按层级路径精准获取XML指定标签的文本值

问题原因

你调用parentNode.getTextContent()时,会返回当前节点下所有后代节点的文本内容拼接结果,因此会把<ow-o:CustomerParty>下两个<oa:Id>的文本全部合并返回,不符合需求。

解决方案

有两种常用实现方式,都可以满足你按ow-o:CustomerParty > oa:PartyId > oa:Id层级路径查找的需求:

方法1:DOM逐层遍历查找

通过元素节点的getElementsByTagName方法逐层筛选子节点,代码如下:

// 1. 获取根下的ow-o:CustomerParty节点
NodeList customerPartyList = document.getElementsByTagName("ow-o:CustomerParty");
Node customerPartyNode = customerPartyList.item(0);

if (customerPartyNode.getNodeType() == Node.ELEMENT_NODE) {
    Element customerPartyEle = (Element) customerPartyNode;
    // 2. 从CustomerParty下获取oa:PartyId节点
    NodeList partyIdList = customerPartyEle.getElementsByTagName("oa:PartyId");
    Element partyIdEle = (Element) partyIdList.item(0);
    // 3. 从oa:PartyId下获取oa:Id节点,取文本
    NodeList idList = partyIdEle.getElementsByTagName("oa:Id");
    String targetId = idList.item(0).getTextContent().trim();
    // 此时targetId值为123-123
}

方法2:XPath直接查询(更简洁)

如果需要处理更复杂的层级筛选,直接用XPath路径表达式查询即可,代码更短:

XPath xpath = XPathFactory.newInstance().newXPath();
// 直接写层级路径表达式
String xpathExp = "//ow-o:CustomerParty/oa:PartyId/oa:Id/text()";
String targetId = xpath.evaluate(xpathExp, document).trim();

注意:如果项目开启了XML命名空间严格校验,需要额外实现NamespaceContext接口绑定命名空间前缀和URI,未开启校验的场景下以上代码可直接运行。

内容的提问来源于stack exchange,提问作者A.J

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.15 03:27:00