XML节点如何成为自己的子节点?

我有我的XML文件的以下结构,我正在使用VBA(Excel 2013)中的MSXML2 V6.0库。

<root> <products> <product>relational database</product> <product>virtual machine</product> </products> </root> 

当我检查product节点时,它说的值是“关系数据库”(对于第一个节点),但是它也将childNode列为“关系数据库”。 这怎么可能?

我希望能够通过编程的方式弄清楚我是否已经通过查看是否有更多的子节点到达节点树的底部,但是如果它总是自引用当前节点作为它的话,这似乎是不可能的自己的孩子(我注意到这只发生在节点有文字时,如果它只是有一个属性,但没有文字,它显示childNodes为空)。

当节点有文本时,为什么一个节点会将自己计算为自己的子节点,但没有实际的子元素,以及什么方式来真正确定何时到达节点树的末端?

在XML DOM中,元素中包含的文本也是一个名为#text的子节点

原因是一些元素可以包含文本和其他元素的混合,如:

 <p> Hello <strong>Wonderful</strong> World</p> 

在这种情况下,每个文本( HelloWorld )都成为一个孩子的#text节点。