2010-07-30 2 views
1

속성 ID 또는 이름을 가진 테이블과 행을 루프하여 각 TD 셀에서 내부 텍스트를 깊게 가져올 수 있습니까? asp.net, C# 및 최신 html 민첩성 패키지에서 작업합니다. 안내해주십시오. 고맙습니다.Html 민첩성 팩 - 행과 열을 반복합니다.

HTML 파일에는 여러 개의 테이블이 있습니다. 그 중 하나에는 id = main-attribute 속성이 있습니다. 식별 된 테이블에는 많은 행이 있습니다. 이러한 행 중 일부는 동일한 속성 이름 = display를가집니다. 명명 된 행에는 텍스트를 추출해야하는 열이 많이 있습니다. 이런 식으로 뭔가 :

<body> 
<table> 
... 
</table> 
<table> 
... 
</table> 

<table id="main-part"> 
    <tr> 
    <td></td> 
    ... 
    </tr> 
    <tr> 
    <td></td> 
    ... 
    </tr> 
    <tr name="display"> 
    <td>Jan</td> 
    <td>Feb</td> 
    <td>Mar</td> 
    ... 
    </tr> 
     <tr name="display"> 
    <td>Apr</td> 
    <td>May</td> 
    <td>June</td> 
    ... 
    </tr> 
     <tr name="display"> 
    <td>Jul</td> 
    <td>Aug</td> 
    <td>Sep</td> 
    ... 
    </tr> 
    <tr> 
    <td></td> 
    ... 
    </tr> 
    <tr name="display"> 
    <td>Oct</td> 
    <td>Nov</td> 
    <td>Dec</td> 
    ... 
    </tr> 
    <tr> 
    <td></td> 
    ... 
    </tr> 
</table> 
<table> 
... 
</table> 
</body> 
+0

이 링크를 참조하십시오. htmlagility 패키지 사용 방법에 대한 예 .. [http://forums.asp.net/t/1508198.aspx?PageIndex=2] –

+0

나는 링크를 따라 갔다. 뭔가 흥미 롭습니다. 고맙습니다. – David

답변

2

당신은 XPath를 사용하여 이러한 노드를 선택해야는 :

foreach(HtmlNode cell in doc.DocumentElement.SelectNodes("//tr[@name='display']/td") 
{ 
    // get cell data 
} 
+0

도와 주셔서 감사합니다. 새로운 패키지에 대해서는 DocumentElement 대신 DocumentNode를 사용합니다. – David

1

그것은했다! 대단히 감사합니다.

HtmlDocument doc = new HtmlDocument(); 
     doc.Load(@"C:/samplefolder/sample.htm"); 
foreach(HtmlNode cell in doc.DocumentNode.SelectNodes("//tr[@name='display']/td")) 
{ 
     string test = cell.InnerText; 
     Response.Write(test); 
} 

그것은 JanFebMarAprMayJuneJulAugSepOctNovDec 같은 결과를 보여 주었다. 스페이스 바 또는 탭으로 구분하여 어떻게 정렬 할 수 있습니까? 고맙습니다.

+0

아마도 이것이 새로운 질문일까요? 어쨌든'Response.Write'를 할 때 끝에 쉼표를 추가 할 수 있습니다 - Response.Write (test + ","); ' – Oded

+0

도움이 되었다면 응답을 upvote하고 받아 들여야합니다. FAQ - http://stackoverflow.com/faq – Oded

+0

을 참조하십시오. Response.WriteLine (test); 대신 Response.Write (테스트); 그리고 그것의 끝에서 모두 Response.ReadLine(); 그래서 당신은 그것을 볼 수 있고 당신이 기대했던대로 그것이 [Enter]를 눌러 화면을 종료하기 전에 모든 것을 확인할 수 있습니다. –

관련 문제