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

Java中如何解析XML标签的temperature属性值?

如何从XML中提取temperature标签的value属性值?

首先帮你排查下之前代码里的问题,再给出简单可靠的解决方案:

你之前代码的两个关键问题:

  • 拼写错误:你写的getElementsByTagName("temprature")多了个r,正确的标签名是temperature
  • 依赖节点位置不可靠:用errNodes.item(2)获取节点完全依赖XML的节点顺序,一旦XML结构调整,代码就会失效,这不是稳妥的做法

正确的DOM解析方案

DOM解析里获取元素属性非常简单,只要拿到对应的Element对象,直接调用getAttribute()方法就能拿到目标属性值。基于你原来的代码,修改后的完整代码如下:

Document doc = DocumentBuilderFactory.newInstance().newDocumentBuilder().parse(new InputSource(new StringReader(response.toString())));
NodeList currentNodes = doc.getElementsByTagName("current");
if (currentNodes.getLength() > 0) {
    Element currentElement = (Element) currentNodes.item(0);
    // 获取temperature元素
    NodeList tempNodes = currentElement.getElementsByTagName("temperature");
    if (tempNodes.getLength() > 0) {
        Element tempElement = (Element) tempNodes.item(0);
        // 直接提取value属性值
        String tempValue = tempElement.getAttribute("value");
        System.out.println("Temperature value: " + tempValue);
    }
    // 保留你原来的country解析逻辑
    NodeList countryNodes = currentElement.getElementsByTagName("country");
    if (countryNodes.getLength() > 0) {
        System.out.println("Country: " + countryNodes.item(0).getTextContent());
    }
}

代码解释:

  1. 先获取current节点(和你原来的逻辑一致)
  2. 从current节点下精准查找temperature标签,避免全局查找的冗余
  3. 把找到的temperature节点转换成Element对象(Node没有属性操作方法,Element作为子类提供了相关能力)
  4. 调用getAttribute("value")直接拿到属性值,比操作Attributes集合更简洁直观

如果你想更高效,也可以用XPath直接定位,代码会更简洁:

XPath xpath = XPathFactory.newInstance().newXPath();
String tempValue = xpath.evaluate("/current/temperature/@value", doc);
System.out.println("Temperature value: " + tempValue);

这种方式不需要逐层遍历节点,直接通过路径表达式就能拿到目标属性值,适合结构固定的XML解析场景。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.28 06:15:57