Zählen Sie Zeilen und Spalten in der Html-Tabelle mit Untertabellen, die HtmlAgilityPack verwenden

html-agility-pack html-table vb.net

Frage

Ich analysiere eine Html-Tabelle und brauche die Anzahl der Spalten und Zeilen.

Ich habe versucht mit:

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

Aber ich bekomme falsche Ergebnisse, wenn die Tabelle eine oder mehrere Untertabellen enthält.

Hier ist ein Beispiel für eine HTML-Tabelle, die ich parsen muss:

<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>

In diesem Beispiel brauche ich folgende Ergebnisse: Spalten = 3 Zeilen = 5

Wie kann ich die Anzahl der Zeilen und Spalten (nur für die Haupttabelle) ermitteln, ohne die Zeilen und Spalten der Untertabelle zu zählen?

Beliebte Antwort

Ich habe es so gelöst:

Für Spalten :

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

Für Zeilen :

Zuerst : Nach Untertabellen suchen

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

Dann : Zeilen in Untertabellen zählen und von den Gesamtzeilen subtrahieren

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

Lizenziert unter: CC-BY-SA with attribution
Nicht verbunden mit Stack Overflow
Lizenziert unter: CC-BY-SA with attribution
Nicht verbunden mit Stack Overflow