Подсчитайте строки и столбцы в таблице Html, имеющие подтаблицы, используя HtmlAgilityPack

html-agility-pack html-table vb.net

Вопрос

Я разбираю таблицу Html, и мне нужны столбцы и строки.

Я попытался использовать:

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>

В этом примере мне нужны следующие результаты: Столбцы = 3 строки = 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

Затем : Count Rows in Subtables и вычесть из итоговых строк

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


Лицензировано согласно: CC-BY-SA with attribution
Не связан с Stack Overflow
Является ли этот КБ законным? Да, узнайте, почему
Лицензировано согласно: CC-BY-SA with attribution
Не связан с Stack Overflow
Является ли этот КБ законным? Да, узнайте, почему