2012-01-18 4 views
0

HTML 표의 셀에서 특정 필드를 가져와야합니다. 파이어 버그를 사용하여 내가 필요로하는 셀에 정확한 XPath를 얻을 수있었습니다 (불행히도 셀에는 ID 태그가 없습니다). 나는 DocumentNode.SelectSingleNode를 사용하고 그 경로를 전달할 수 있다고 생각했지만 제대로 작동하지 않는 것 같습니다. 내가 도대체 ​​뭘 잘못하고있는 겁니까? 아니면 제가하는 일보다 더 나은 접근 방법이 있습니까? 불행히도 XPath에 대한 경험이 없기 때문에 이것이 예상보다 어려워졌습니다. HTML 민첩성 팩을 사용하여 특정 표 셀을 선택하는 방법

Dim page As New HtmlAgilityPack.HtmlDocument 
Dim node As HtmlAgilityPack.HtmlNode 
page.LoadHtml(fileContents) 
node = page.DocumentNode.SelectSingleNode("/html/body/form/div[6]/table/tbody/tr/td/table/tbody/tr/td/table/tbody/tr/td/table/tbody/tr/td[2]") 

이 많은 감사 : 여기에 내가 (필자는 HTML이 particuarly 지저분한 알고,하지만 그 변경 내 컨트롤에없는) 지금까지 무슨이다.

답변

1

방화범이 끊어진 고정 html 태그 일 수 있습니다. Html 노드를 선택하려면 class 또는 id를 사용하는 것이 좋습니다. 예 :

//div[@class='content']//table//tr[1]/td[2] 

경로를 단축하고, 클래스 ID 또는 선택기를 사용한다. 테이블이 자신의 ID를 가지고있는 경우

, 당신은 사용할 수 있습니다

//table[@id='tableid']/tr[1]/td[2] 

는 XPATH가 흥미 발견 할 것이다, 그것을 시도.

+0

고마워요! 부모 테이블 중 하나에 ID가 있고 그 접근법을 사용하여 필자가 필요로했던 것을 드릴 다운 할 수있었습니다. – Avi

+0

HtmlAgilityPack에는 XPath 선택기에 몇 가지 버그가 있습니다. C#의 XML 구성 요소 버그 일 수 있습니다. 때때로 "// table [@ id = 'tableid']/tr [3]/td [2]"에 의해 세 번째 tr을 선택하려고합니다. 그것은 null을 반환 할 수 있습니다 .... – DennisZhong

관련 문제