c#检查XmlNode值属性
本文关键字:属性 XmlNode 检查 | 更新日期: 2023-09-27 18:02:51
我编写这段代码是为了检查XmlNode是否有值,但是当我运行它时,它总是在!=null时崩溃。这很奇怪,因为这个解决方案是众所周知的。
private static void TraverseNodes(XmlNodeList nodes)
{
foreach (XmlNode node in nodes)
{
if (!node.HasChildNodes)
{
Console.WriteLine(node.Name + " " + node.Attributes["id"].Value);
}
if (node.Attributes["SplitCombinationOperator"].Value != null)
{
Console.WriteLine(node.Name + " " + node.Attributes["SplitCombinationOperator"].Value);
}
else
{
Console.WriteLine(node.Name);
}
TraverseNodes(node.ChildNodes);
}
}
错误如下:对象引用未设置为对象的实例
您应该像这样检查空值:
node.Attributes["SplitCombinationOperator"] != null &&
node.Attributes["SplitCombinationOperator"].Value != null
否则,当node.Attributes["SplitCombinationOperator"]
为null时,您将获得NullReferenceException
,而试图访问其Value
属性
您只需要检查属性索引器本身是否返回null:
if (node.Attributes["SplitCombinationOperator"] != null)
当前,它返回null,并且您正在为Value
属性解引用它-因此出现例外。请注意,您还假设有一个id
属性,这可能不是一个好主意。
(您不需要检查Value
本身是否为空-如果该属性存在,则值为非空。即使它是空的,你也会得到一个空字符串,而不是一个空引用。