htmlagilitypack: Finde eine zweite Tabelle in einem div

c# html-agility-pack

Frage

Ich versuche, Informationen von einem div zu analysieren, das 3 Tabellen darin hat. Ich kann Informationen von der ersten ohne Problem erhalten.

Code so weit wie folgt:

HtmlAgilityPack.HtmlWeb doc = new HtmlAgilityPack.HtmlWeb();
HtmlAgilityPack.HtmlDocument htmldocObject = doc.Load(URL);
var res = htmldocObject.DocumentNode.SelectSingleNode("//div[@class='BoxContent']");

var firstTable = res.SelectSingleNode("//table");
var charName = firstTable.ChildNodes[i++].InnerText.Substring(5).Trim();

<div class="BoxContent">
    <table>
        <tr bgcolor=#505050>
            <td colspan=2 class=white>
            <b>I'm getting this text</b>
            </td>
        </tr>
        <tr bgcolor=#F1E0C6>
            <td>I get this too</td>
            <td>I'm getting this as well</td>
        </tr>
    </table>
    <table>
        <tr>
            <td>Trying to retrieve this</td>
        </tr>
    </table>
</div>

Wie kann ich die zweite Tabelleninformation mit HAP finden?

Ich habe einiges über die Nexsibling-Funktion gelesen, aber ich kann es nicht zum Laufen bringen.

Akzeptierte Antwort

var secondTable = res.SelectSingleNode("//table[2]");

Beliebte Antwort

Sie können versuchen, direkt nach den <td> -Tags zu wechseln, indem Sie Ihre Xpath-Zeichenfolge ändern.

HtmlNodeCollection tdNodeCollection = htmldocObject
                                     .DocumentNode
                                     .SelectNodes("//div[@class = 'BoxContent']//td");

foreach (HtmlNode tdNode in tdNodeCollection)
{
     Console.WriteLine(tdNode.InnerText);
}


Lizenziert unter: CC-BY-SA with attribution
Nicht verbunden mit Stack Overflow
Ist diese KB legal? Ja, lerne warum
Lizenziert unter: CC-BY-SA with attribution
Nicht verbunden mit Stack Overflow
Ist diese KB legal? Ja, lerne warum