2012-04-03 2 views
0

전에 html 민첩성 팩을 사용해 봤는데 약간의 시행 착오로 좋은 결과를 얻었습니다. 현재 XPath를 마우스 오른쪽 버튼으로 클릭하여 설정 한 노드 집합을 반환하는 데 Firefox를 사용하려고합니다. 나는 약간의 검색을했는데, 브라우저가 종종 테이블 태그에 "tbody"를 추가 할 것입니다. 나는 행운이 제거 제거하려고했습니다.C#/Html 민첩성 팩 오류 "값은 null 일 수 없습니다 매개 변수 이름 : 원본."

/html/body/p[3]/table/tbody/tr/td/table/tbody/tr[3] 

이 된 직후되는 오류가 발생합니다 사용 : 다음은 파이어 폭스 나에게 주어진 XPath는이 "값은 null 일 수 없습니다 매개 변수 이름 :. 소스는."

이 라인에 발생

nodeList = htmlDoc.DocumentNode.SelectNodes("/html/body/p[3]/table/tbody/tr/td/table/tbody/tr[3]").ToList(); 

나는 누구에게나 쉬운 수정이라면 계속 읽을 것이며, 팁을 주시면 감사하겠습니다.

업데이트 : SelectNodes 방법은 XPath 식으로 노드를 찾을 수없는 경우,

nodeList = htmlDoc.DocumentNode.SelectNodes("/html/body/p[3]/table/tbody/tr/td/table/tbody/tr[3]").ToList(); 

것은이 :이 오류는이 라인에서 발생하는 것 같다

protected override List<IDataPoint> ReturnDataPointsFromIndividualAddressString(string AddressString) 
{ 
     List<IDataPoint> earningsAnnouncements = new List<IDataPoint>(); //Not used, yet.. 

     HtmlWeb hwObject = new HtmlWeb(); 
     HtmlDocument htmlDoc = hwObject.Load(AddressString); 

     if (htmlDoc.DocumentNode != null) 
     { 
       List<HtmlNode> nodeList = new List<HtmlNode>(); 
       nodeList = htmlDoc.DocumentNode.SelectNodes("/html/body/p[3]/table/tbody/tr/td/table/tbody/tr[3]").ToList(); 
     } 
} 
+0

이 오류를 일으키는 코드를 게시 할 수 없습니다 :

는이 같은 null에 대해이 변수를 확인 방지하려면? – Alex

+0

물론 원본 게시물을 업데이트하겠습니다. – StatsViaCsh

답변

4

이 실제 코드 전달하면 null이 반환됩니다. 유사한 질문 인 this answer에서 자세한 정보를 찾을 수 있습니다. HTML Agility Pack Null Reference. 그리고 null 개체에서 ToList() 메서드를 호출하면 실제로는 NullReferenceException이됩니다.

var nodes = htmlDoc.DocumentNode.SelectNodes(...); 
if (nodes != null) 
{ 
    nodeList = nodes.ToList(); 
} 
+0

실제로 오류가 발생합니다. HtmlDocument htmlDoc = hwObject.Load (AddressString); – StatsViaCsh

+0

@StatsViaCs, 이상합니다. 'HtmlWeb.Load'가'source' 매개 변수로'NullReferenceException'을 던지는 것을 볼 수 없습니다. 이 오류의 원인이 된'AddressString'의 값을 게시 할 수 있습니까? – Alex

+0

나의 실수 알렉스 .. 그것은 정말로 당신이 제안한 라인에 던져 넣을 것입니다, 나는 잠시 물러났습니다, 미안 해요. – StatsViaCsh

관련 문제