2011-09-14 1 views
0

XmlDocument를 사용하여 XML 파일을로드하려고합니다. 그러나 코드는 항상 '개체 참조가 개체의 인스턴스로 설정되지 않았습니다'오류를 반환합니다.코드가 '개체 참조가 개체의 인스턴스로 설정되지 않았습니다.'오류를 반환하는 이유는 무엇입니까?

namespace TestP2 
{ 
class Program 
{ 
    static void Main() 
    { 
     XmlDocument xd = new XmlDocument(); 
     xd.Load(@"c:\1\1.xml"); 

     XmlNodeList nodelist = xd.SelectNodes("E1/E2/E3"); 
     foreach (XmlNode node in nodelist) 
     { 
      string test = ""; 
      test += node.Attributes.GetNamedItem("function").Value; 
      Console.WriteLine(test); 
     } 
    } 
} 
} 

어떻게이 문제를 해결할 수 있습니까?

+0

오류와 함께 스택을 표시 할 수 있습니까? –

답변

1

'코드'는 존재하지 않는 것에 대한 개체 참조가 있기 때문에 발생합니다. 디버깅을 통해이 문제를 해결하고, 존재하지 않는이 객체를 참조하는 객체를 확인할 수 있습니다.

XML의 경우 노드 또는 속성을 찾을 수 없습니다. 그러나 완전한 오류 메시지와 XML 없이는이 문제를 해결할 수 없습니다.

2

이 코드에는 취약점이 있으며, 다른 설명이없는 경우 그 원인에 영향을 줄 수 있습니다.

  1. xd.SelectNodes("E1/E2/E3") 값을 반환합니까? null을 돌려주는 경우는, foreach 스테이트먼트가 예외를 throw합니다.
  2. 어떤 경우에도 node.Attributes.GetNamedItem("function")이 null을 반환합니까? 그렇다면 .Value을 요청하면 예외가 throw됩니다.
1

.Value가 null이거나 초기화되지 않았을 것으로 예상됩니다. 스택 추적을 확인하고 확인하십시오.