HtmlAgilityPack을 사용하여 서브 테이블을 갖는 Html 테이블의 행 및 열 수

html-agility-pack html-table vb.net

문제

나는 HTML 테이블을 파싱하고 있는데, 필자는 열과 행 수를 필요로한다.

내가 사용 tryed :

ColNum = mTables(1).SelectNodes(".//th").Count
RowNum = mTables(1).SelectNodes(".//tr").Count

그러나 테이블에 하나 이상의 하위 테이블이있는 경우 잘못된 결과가 표시됩니다.

다음은 구문 분석해야하는 html 테이블의 샘플입니다.

<table border='1'>
    <tbody>
        <tr><th>Some Text</th><th>Some Text</th><th>Some Text</th></tr>
        <tr><td>Some data</td><td>Some data</td><td>Some data</td></tr>
        <tr><td>Some data</td><td>Some data
                     <table border='1'>
                         <tbody>
                             <tr><th>Some Text</th><th>Some Text</th></tr>
                             <tr><td>Some Data</td><td>Some Data</td></tr>
                         </tbody>
                     </table><td>Some data</td></tr>
        <tr><td>Some data</td><td>Some data</td><td>Some data</td></tr>
        <tr><td>Some data</td><td>Some data</td><td>Some data</td></tr>
    </tbody>
</table>

이 샘플에서는이 결과가 필요합니다. Columns = 3 Rows = 5

하위 테이블의 행과 열을 계산하지 않고 행과 열의 수를 얻으려면 어떻게해야합니까?

인기 답변

나는이 방법으로 해결했다.

열의 경우 :

ColNum = mTables(1).SelectSingleNode(".//tbody//tr[1]").SelectNodes(".//th").Count

행의 경우 :

첫 번째 : 하위 테이블 확인

Dim SubTbl%
Try
    SubTbl% = mTables(1).SelectNodes(".//table").Count
Catch ex As Exception
    SubTbl% = 0
End Try

그런 다음 : 서브 테이블의 행 수를 계산하고 총 행 수에서 뺍니다.

Dim SubTRows% = 0
If SubTables > 0 Then
    For SubT As Short = 1 To SubTables
        Dim STRows% = mTables(1).SelectNodes(".//table[" & SubT & "]//tr").Count
        SubTRows += STRows
    Next
    RowsNum = mTables(1).SelectNodes(".//tr").Count - SubTRows
Else
    RowsNum = mTables(1).SelectNodes(".//tr").Count
End If


Related

아래 라이선스: CC-BY-SA with attribution
와 제휴하지 않음 Stack Overflow
아래 라이선스: CC-BY-SA with attribution
와 제휴하지 않음 Stack Overflow