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文件中?谢谢。

4

1 回答 1

8

东西是null。您正在检查选定的“语言”节点null,它node本身也是null

将代码分散到更多行,嵌套?:代码不容易遵循,您必须重复默认值和函数调用。

使用变量,例如 one for,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;
    }
  }
}
于 2012-08-17T11:41:55.883 回答