XmlElement HasChildNodes属性定义

时间:2012-12-22 19:06:41

标签: c# .net xml xmldocument

假设您有这种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,我的问题是HasChildNodes元素的<Name>属性返回true,而我希望它返回false。

根据我的定义,

HasChildNodes应该是这样的:<Worker>还有孩子,<Address>也是,<Street><Name>没有孩子,他们有价值的。

如何区分这些案例?是否有其他属性具有我期望的行为?

3 个答案:

答案 0 :(得分:2)

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

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

答案 1 :(得分:1)

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

答案 2 :(得分:0)

这是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