1

假设您有以下 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>

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

4

3 回答 3

2

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

也许你可以测试一下独生子女是否XMLElementXMLText孩子,或者是否没有XMLElement孩子?

于 2012-12-22T20:57:35.550 回答
1

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

于 2012-12-22T20:58:43.793 回答
1

这是 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
于 2017-07-03T10:57:46.327 回答