Java使用XPath获取result节点后如何提取location和name子节点值
Java从result节点提取location和name取值的方案
以下是两种常用的稳定实现方式:
方法1:使用getElementsByTagName(简单快捷,适合简单结构)
将当前result节点转为Element类型后直接按标签名提取子节点内容,代码示例:
for (int i = 0; i < nodes.getLength(); i++) { Node node = nodes.item(i); // 校验节点为元素节点 if (node.getNodeType() == Node.ELEMENT_NODE) { Element resultElement = (Element) node; // 提取location取值 String location = resultElement.getElementsByTagName("location").item(0).getTextContent().trim(); // 提取name取值 String name = resultElement.getElementsByTagName("name").item(0).getTextContent().trim(); // 此处可添加业务逻辑使用拿到的两个值 } }
方法2:相对路径XPath查询(更灵活,适合复杂结构)
如果XML结构复杂、存在多层嵌套可能出现同名标签,使用XPath相对路径查询更精准,还可以预编译XPath表达式提升性能:
// 提前创建XPath实例、预编译子节点查询表达式,避免循环内重复创建 XPath xpath = XPathFactory.newInstance().newXPath(); XPathExpression locExpr = xpath.compile("location/text()"); XPathExpression nameExpr = xpath.compile("name/text()"); for (int i = 0; i < nodes.getLength(); i++) { Node node = nodes.item(i); String location = locExpr.evaluate(node).trim(); String name = nameExpr.evaluate(node).trim(); // 此处可添加业务逻辑使用拿到的两个值 }
注意事项
- 示例中添加的
trim()用于去除文本首尾的空白字符,若需要保留原XML中的首尾空白可删除该方法调用。 - 如果业务场景中可能存在
result节点缺失location/name标签的情况,需要额外增加空判断逻辑避免空指针异常。 - 方法1的
getElementsByTagName会递归查找当前节点下所有匹配标签名的节点,若确定location和name都是result的直接子节点、没有嵌套同名标签可放心使用,复杂场景优先选择方法2。
内容的提问来源于stack exchange,提问作者Yellowjacket
相关产品推荐
相关产品推荐

