在Java中获取XML节点属性值最常用方式是DOM解析器配合Element的getAttribute()方法;需先解析XML获得Document,再定位Element并调用getAttribute("attrName"),命名空间属性用getAttributeNS(),复杂结构推荐XPath,注意节点类型、大小写及内存开销。
在Java中获取XML节点的属性值,最常用且标准的方式是使用DOM解析器(DocumentBuilder),配合Element对象的getAttribute()方法。只要正确加载XML文档并定位到目标元素,获取属性值就非常直接。
DOM将整个XML加载为内存中的树结构,适合读取和修改。关键步骤是:解析XML → 获取目标Element → 调用getAttribute("attrName")。
DocumentBuilder成功解析,得到Document对象getElementsByTagName()或getElementById()等方法定位到具体Element
element.getAttribute("id")获取字符串值;若属性不存在,返回空字符串(不是null)如果XML使用了命名空间(例如xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"),普通getAttribute()可能无法匹配带前缀的属性。此时应使用带命名空间参数的方法:
element.getAttributeNS("http://www.w3.org/2001/XMLSchema-instance", "schemaLocation")element.getAttributes()遍历所有Attr节点检查当XML结构复杂、目标节点嵌套较深时,XPath比逐层遍历更简洁。例如提取的id值:
XPath实例,编译表达式如"//book/@id"(匹配任意位置book元素的id属性)evaluate(),指定返回类型为STRING,结果即为属性值
持更精确路径,如"/library/book[1]/@category",适合固定结构场景实际开发中容易忽略几个细节:
getAttribute()只对Element有效,不能用于Text或Comment节点——务必确认当前节点类型是Node.ELEMENT_NODE
getAttribute("ID")和getAttribute("id")是不同的"".equals(val) ? "unknown" : val