2013-02-14 60 views
1

有人可以告訴我爲什麼這是拋出一個空引用異常(對象引用未設置爲對象的實例)。我的代碼讀取一個簡單的XML文件,然後應該將2個元素內的文本傳遞給另一個方法。然而,在foreach循環的第一行拋出異常:這是爲什麼拋出空引用異常?

請原諒我的無知,我是新的。 :)

private void openProjectToolStripMenuItem_Click(object sender, EventArgs e) 
{ 
    //I have to pass 'this' (which is Form1) when creating the Projects (Form2) in order for them to understand/see each other  
    Projects myProjects = new Projects(this); 

    //displays the Form 2 (called Projects) 
    myProjects.Show(); 

    XmlDocument xdoc = new XmlDocument(); 
    xdoc.Load("O:\\TestDaws\\projects.xml"); 

    string projList = "/Projects/Project"; 
    XmlNodeList xprojects = xdoc.SelectNodes(projList); 

    foreach (XmlNode xNodeName in xprojects) 
    { 
     string projectname = xNodeName.SelectNodes("/ProjectName")[0].InnerText.ToString(); 
     string projecttype = xNodeName.SelectNodes("/ProjectType")[0].InnerText.ToString(); 
     myProjects.buildProjectList(projectname, projecttype); 
    } 

} 
+0

你是否設置了一個斷點並在進入'foreach'循環之前檢查'xprojects'是否爲空? – DGibbs 2013-02-14 11:31:28

+0

你在哪裏得到null? – DarthVader 2013-02-14 11:31:42

+0

@DarthVader從OP:'但是異常拋出在foreach循環的第一行' – DGibbs 2013-02-14 11:32:07

回答

2

更改SelectNodes("/ProjectName")SelectNodes("./ProjectName")。 (當然/ProjectType

/ProjectName將始終從根,而不是從您調用它的節點中選擇。 ./從curent節點開始。

+0

這工作!非常感謝你。但爲什麼??我很困惑! – Daedalus 2013-02-14 11:42:08

+0

@ user2008060 - 有關說明,請參閱我的答案的第二行 – 2013-02-14 12:20:25

0

這意味着xprojects
請問您是否可以發佈您的projects.xml文件內容。

問候,
奧馬爾

+0

是的,它會拋出一個NullPointerException – 2013-02-14 14:11:17

相關問題