2012-07-09 4 views
2

범위 this page을 구문 분석하려고합니다. 포르투갈어에 익숙하지 않은 학생들을 위해이 페이지는 "Semester"로 분류 된 특정 과정 (대학 과정)의 모든 과목을 포함합니다.HTMLAgilityPack XPath 표현식이 모든 노드를 가져 오지 않습니다.

이렇게 "7º Período Ideal"과 같은 것을 볼 때마다, "학년도 과목"(7 학기부터 )과 같이 이해할 수 있습니다.

문제 XPath 식을 사용하여 테이블 행이 포함 된 테이블에서 모든 테이블 행을 가져옵니다.

XPath Used : //table[@cellspacing=2]//tr 

C# Statement : htmlMap.DocumentNode.SelectNodes("//table[@cellspacing=2]//tr"); 

이 C#을 문에 의해받은 HtmlNodeCollection는 바로 5º Período Ideal로 한 후,이 텍스트 EAD0648 Gerência de Produtos/Serviços e Mercados와 나올 때까지 테이블 행 노드가 포함되어 있습니다.

이 XPath는 "작동"하지만 모든 내용이 tr's (예상대로)이며 이는 내가 원하는 것이 아닙니다.

//tr 

XPath가이 노드 다음에 모든 노드를 검색하지 않는 이유는 무엇입니까?

검색된 노드의 뚜껑이 있습니까? 내가 누락 된 것이 있습니까? 테이블이 아니라 다음이 발생하는 등의 문제가 형성되지 않은 경우 사전에

덕분에

+0

가능한 한 가장 작은 html 문서로 축소하여 문제를 재현 한 다음 해당 문서를 질문 텍스트에 추가 할 수 있습니까? 링크가 도움이 될 수도 있지만, 링크가 더 이상 작동하지 않으면 지금부터 Stack Overflow 년 후 방문자에게별로 도움이되지 않습니다. –

+0

HTML이 거대합니다 =/ pastebin에 게시 할 수 있습니다 –

+0

문제가 계속되는 작은 샘플로 축소 할 수 없습니까? –

답변

3

나는 과거에이 발생했습니다. 페이지에 대한 HTML을 매우 빠르게 살펴본 결과 가능한 문제가있는 것을보고 2785 줄에 </tr>이 있고 <tr> 줄 2796이없는 다른 </tr>이 있습니다.

나는 확인을 위해 심층적 인 검증을하지 않았지만, 단지 그것을보고 개구부와 일치하지 않는다는 것을 인정한다. <tr>. 제가 언급했듯이 잘못된 표가있는 페이지에서이 정확한 문제에 직면했기 때문에 나는 즉시이를 확인했습니다.

+0

고마워요 Mr Mc Gyver –

+0

정말 기쁩니다. –

관련 문제