C # / Html 민첩성 팩 오류 "값은 null 일 수 없습니다 매개 변수 이름 : 원본."

c#-4.0 html-agility-pack

문제

전에 html 민첩성 팩을 사용해 봤는데 약간의 시행 착오로 좋은 결과를 얻었습니다. 현재 XPath를 마우스 오른쪽 버튼으로 클릭하여 설정 한 노드 집합을 반환하는 데 Firefox를 사용하려고합니다. 나는 약간의 검색을했는데, 브라우저가 종종 테이블 태그에 "tbody"를 추가 할 것입니다. 나는 행운이 제거 제거하려고했습니다. 다음은 파이어 폭스에서 제공 한 xpath입니다.

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

이것을 사용하면 " 값은 null 일 수 없습니다. 매개 변수 이름 : 원본 "오류가 발생 합니다.

온라인에서 발생합니다.

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();
       }
}

인기 답변

이 줄에서이 오류가 발생합니다.

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

것은 SelectNodes 메서드가 xpath 표현식에 의해 노드를 찾지 못하면 null 을 반환합니다. HTML Agility Pack Null Reference 와 유사한 질문에 대한 답변 에서 자세한 정보를 찾을 수 있습니다. 그리고 나서 NullReferenceException 이 실제로 발생하는 null 객체에서 ToList() 메서드를 호출합니다.

이 검사를 피하려면 다음과 같이 null 대한이 변수를 지정하십시오.

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



아래 라이선스: CC-BY-SA with attribution
와 제휴하지 않음 Stack Overflow
이 KB는 합법적입니까? 예, 이유를 알아보십시오.
아래 라이선스: CC-BY-SA with attribution
와 제휴하지 않음 Stack Overflow
이 KB는 합법적입니까? 예, 이유를 알아보십시오.