2012-08-17 169 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; 
    } 
    } 
}