今天发现一个奇怪的问题,当我想判断一个xml node是否是孤节点,即没有子节点时,用常规判断并没有得到我想要的结果,我一度以为是我记错了,我记得之前一直那么用的。。。。
经查 ,在有InnerText的情况下,C#的XmlNode类提供的ChildNodes以及HasChildNodes属性都没法判断这种情况,如下:
csharp
//node = "<msgBus>TibRv</msgBus>";
node.HasChildNodes; //true
node.ChildNodes.Count; //>0
如此的话,那就达不到我要的结果,会影响逻辑,那。。。。
那就在判断了HasChildNodes以后继续判断ChildNodes[0].Name=="#text"来判断,不就行了
所以,解决方法如下:
csharp
public bool IsLeafTextNode(XmlNode node)
{
if (node.HasChildNodes && node.ChildNodes[0] != null && node.ChildNodes[0].Name != "#text")
{
return true;//代表有子节点
}
else
{
return false;//代表无子节点
}
}
综上,共勉!