2013-02-14 2 views
1

누군가가 이것이 왜 null 참조 예외 (객체 참조가 객체의 인스턴스로 설정되지 않음)를 던지고 있는지 말해 줄 수 있습니까? 내 코드는 간단한 xml 파일을 읽은 다음 2 개의 요소 내에서 텍스트를 다른 메서드로 전달해야합니다. 그러나 예외는 foreach 루프의 첫 번째 줄에서 throw됩니다.이 예외가 null 참조 예외를 발생시키는 이유는 무엇입니까?

제발 무지를 용서해주십시오. 전 새로운 것입니다. :)

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'가 null이 아닌지 확인 했습니까? – DGibbs

+0

어디로가는거야? – DarthVader

+0

@DarthVader OP :'예외가 foreach 루프의 첫 번째 줄에서 throw됩니다. ' – DGibbs

답변

2

변경 SelectNodes("./ProjectName")SelectNodes("/ProjectName"). (당연히 /ProjectType에 대한

/ProjectName은 항상 당신이 그것을 부르는 노드에서가 아니라 루트에서 선택합니다. ./은 현재 노드에서 시작합니다.

+0

이것이 성공했습니다! 고맙습니다. 그러나 왜? 나는 혼란스러워! – Daedalus

+0

@ user2008060 - 설명을 보려면 내 대답의 두 번째 줄을 참조하십시오. –

0

xprojects 있음을 의미합니다.
projects.xml 파일 내용을 게시 할 수 있습니까?

감사합니다,
오마르

+0

예, 가능합니다 NullPointerException을 던집니다. –

관련 문제