检查 XML 节点是否存在?

4
我想检查给定的节点在*.xml文件中是否存在。 我的尝试:
 string language = node.SelectSingleNode("language") != null ? (node.SelectSingleNode("language").Value == "en" ? "en-US" : "en-US") : "en-US";

但是我认为它仅检查节点值。在某些xml文件中,我没有称为language的节点,因此它会给出Null Reference Ex..。如何检查给定节点是否存在于*.xml文件中?谢谢。


结果始终是"en-US",因此string language = "en-US"是一样的! - weston
我唯一能想到代码会抛出 NullReferenceException 的情况是 node 本身为 null。请确认这是您的确切代码,node 不为 null,并且确定是这行代码引发了异常。 - RB.
1个回答

8

某些东西是null。您正在检查所选的“语言”节点是否为null,那么node本身是否为null

将代码展开到更多行,嵌套的?:代码不易于跟踪,您必须重复默认值和函数调用。

使用变量,比如一个用于node.SelectSingleNode("language")的变量,这样您就不必做两次了。这将帮助您找到错误。

string language = "en-US"; //default
if(node!=null)
{
  var langNode = node.SelectSingleNode("language");
  if(langNode!=null)
  {
    //now look at langNode.Value, and overwrite language variable, maybe you wanted:
    if(langNode.Value != "en")
    {
       language = langNode.Value;
    }
  }
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接