getElementsByTagName 返回零而不是 null 为啥

Posted

技术标签:

【中文标题】getElementsByTagName 返回零而不是 null 为啥【英文标题】:getElementsByTagName Returns zero not null whygetElementsByTagName 返回零而不是 null 为什么 【发布时间】:2021-09-13 21:38:39 【问题描述】:
NodeList myNodes = myDoc.getElementsByTagName("dne");

myDoc 中不存在元素“dne”。

然而,myNodes 不是 null,为什么?如果 dne 不在 myDoc 中,则 myNodes 应为 null。

我错过了什么?

【问题讨论】:

为什么您期望返回null 而不是空的NodeList 我猜几乎所有语言/框架的行为都是相似的:函数应该返回对象,但没有找到它 --> null。函数应该返回列表但什么也没找到——>空列表。某些语言/框架可能提供Optional 功能 【参考方案1】:

myNodes 应该为空。

为什么? https://docs.oracle.com/javase/7/docs/api/org/w3c/dom/Element.html#getElementsByTagName(java.lang.String)

返回:匹配元素节点的列表。

如果列表为空,它不会返回 null。它只是返回一个空列表。如果长度为 0,则说明没有匹配的节点。

【讨论】:

以上是关于getElementsByTagName 返回零而不是 null 为啥的主要内容,如果未能解决你的问题,请参考以下文章

如何使 OUTER JOIN 返回零而不是 NULL

当参数作为整数传递时,Laravel 返回零而不是实际的单元格值

在python中以十进制数字显示尾随零而不返回字符串

为啥我得到零而不是1?

getElementsByTagName() 方法

多列 ListView 显示零而不是数据库值