2012-08-17 148 views
4

我想检查给定节点是否存在于*.xml文件中。 我尝试:检查xml节点是否存在?

string language = node.SelectSingleNode("language") != null ? (node.SelectSingleNode("language").Value == "en" ? "en-US" : "en-US") : "en-US"; 

但我认为它的唯一节点value.In检查一些xml文件我没有叫节点所以language它给出了一个Null Reference Ex..。 如何检查给定节点是否存在或在*.xml文件中?谢谢。

+0

结果总是“en-US”,所以'string language =“en-US”'也一样! – weston 2012-08-17 11:40:38

+0

我可以看到代码抛出一个NullReferenceException的唯一方法是如果'node'本身为空。请确认这是你的**确切的**代码,该节点不是空的,而且肯定是这行代码抛出异常? – 2012-08-17 11:40:59

回答

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; 
    } 
    } 
}