Utilizzare HtmlAgilityPack per ottenere l&#39;ultimo <tr> di una tabella html

html html-agility-pack html-table

Domanda

Ho una struttura tabella html. Ho bisogno di ottenere il valore del valore del primo <td> nel tag <tr> finale. Ecco la mia struttura del tavolo. Il valore richiesto dalla funzione seguente getFinalNodeValue è " 3 ".

 <table id="test">
            <tr>
                <td>ID</td>
                <td>Name</td>
                <td>Age</td>
            </tr>
            <tr>
                <td>1</td>
                <td>Yasoda</td>
                <td>21</td>
            </tr>

            <tr>
                <td>2</td>
                <td>Samantha</td>
                <td>25</td>
            </tr>

            <tr>
                <td>3</td>
                <td>Sajee</td>
                <td>26</td>
            </tr>

        </table>


Ecco il codice che ho scritto usando HtmlAgilityPack.

 <table id="test">
            <tr>
                <td>ID</td>
                <td>Name</td>
                <td>Age</td>
            </tr>
            <tr>
                <td>1</td>
                <td>Yasoda</td>
                <td>21</td>
            </tr>

            <tr>
                <td>2</td>
                <td>Samantha</td>
                <td>25</td>
            </tr>

            <tr>
                <td>3</td>
                <td>Sajee</td>
                <td>26</td>
            </tr>

        </table>

Il metodo non restituisce un valore. Qualsiasi aiuto è molto apprezzato.

Risposta accettata

Questo dovrebbe farlo:

    HtmlDocument doc = new HtmlDocument();
    doc.Load(MyHtmlFile);

    HtmlNode node = doc.DocumentNode.SelectSingleNode("//table[@id='test']/tr[last()]/td");
    Console.WriteLine(node.InnerText);

Notare l'uso della funzione last () XPATH


Risposta popolare

L'XPath che usi per popolare la variabile table - "//table[@id='test']//tr[1]" , seleziona il secondo elemento TR , non la tabella.

Molto probabilmente dovrebbe essere solo "//table[@id='test']" .

A questo punto, per recuperare i nodi TR discendenti nella variabile trNodes , dovresti usare:

IEnumerable<HtmlNode> trNodes = table.SelectNodes("tr");



Autorizzato sotto: CC-BY-SA with attribution
Non affiliato con Stack Overflow
È legale questo KB? Sì, impara il perché
Autorizzato sotto: CC-BY-SA with attribution
Non affiliato con Stack Overflow
È legale questo KB? Sì, impara il perché