假设您有这种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>
没有孩子,他们有价值的。
如何区分这些案例?是否有其他属性具有我期望的行为?
答案 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