关于使用Element.getNodeValue()返回NULL的问题

本文解答了使用Element.getNodeValue()返回NULL的问题,并说明了原因。文章指出,在DOM模型中,Element节点本身没有值,其值存在于子节点的text节点中。要获取节点的值,应使用FirstChild.getNodeValue()。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

关于使用Element.getNodeValue()返回NULL的问题

使用DOM方法解析XML数据,

比如这个xml:
<root>
 <name>admin</name>
</root>

在程序中读取

Document doc=........;
Element root=doc.getDocumentElement();
ElementnameNode=(Element)root.getElementsByTagName_r(name).item(0);
String name=nameNode.getNodeValue();


name返回值竟然为NULL?


查阅资料发现,w3c对于xml的节点类型有严格规定,我们又没有自己编写DTD或者schema来指定数据类型的习惯,所以w3c就按自己的理解来了。所以name节点有两个身份,第一它是Node,没有值,第二它是Node的children,有一个text的值==admin。所以你要这样:

String name=nameNode.getFirstChild().getNodeValue();

 

另外,Element类实现了Node接口,该 Node接口是整个文档对象模型的主要数据类型。它表示该文档树中的单个节点。

详细解释:

http://doc.java.sun.com/DocWeb/api/org.w3c.dom.Node
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值