XmlElement HasChildNodes属性定义

本文关键字:定义 属性 HasChildNodes XmlElement | 更新日期: 2023-09-27 17:49:30

假设你有这样一个XML结构:

<Class>
       <Worker>
              <Name> Dan </Name>
              <Phone> 123 </Phone> 
                <Class>
                     <Address>
                        <Street> yellow brick road </Street>
                        <Zip Code> 123456 </Zip Code>
                     </Address>
                </Class>
         </Worker>
 </Class>   

使用XMLElement,我的问题是<Name>元素的HasChildNodes属性返回true,而我希望它返回false。

HasChildNodes由我的定义应该是这样的:<Worker>有孩子,<Address>也,但<Street><Name>没有孩子,他们有一个值代替。

我如何区分这些情况?是否有另一种属性具有我所期望的行为?

XmlElement HasChildNodes属性定义

这是因为Name元素中的"Dan"值被视为子节点。

也许你可以测试XMLElement是否只有XMLText子,或者它是否没有XMLElement子?

在DOM术语中,字符内容表示为文本节点,因此只有完全空的元素节点(<foo/><bar></bar>)才没有子节点。您必须检查所有的子节点,看看它们是否有XMLElement

下面是vb.net中的代码,用于检查节点是否实际上具有xml子元素

Function hasXmlChildElements(ByVal node As XmlNode) As Boolean
            If node.HasChildNodes AndAlso node.ChildNodes.Count = 1 AndAlso node.FirstChild.GetType.Name.ToUpper = "XMLTEXT" Then
                Return False
            End If
            Return node.HasChildNodes
    End Function