Come selezionare elementi nidificati usando il pacchetto agilità HTML?

c# html-agility-pack

Domanda

Ho un seguente tipo di xml / html

<root>
<p1>
    <l1>
        <a>something</a>
        <a>something</a>
        <a>something</a>
        <a>something</a>
    </l1>
    <l1>
        <a>something</a>
        <a>something</a>
        <a>something</a>
        <a>something</a>
    </l1>
</p1>
</root>

Voglio selezionare la collezione di tag l1 e per ogni tag l1 voglio selezionare tutti i tag 'a' per il tag corrente l1. come lo faccio??

Risposta accettata

HtmlAgilityPack utilizza i selettori XPath per selezionare i nodi.

Per il tuo problema questo funzionerebbe:

HtmlDocument doc = new HtmlDocument();
doc.Load(@"test.html");

var l1s = doc.DocumentNode.SelectNodes("//l1");
foreach (var item in l1s)
{
    var links = item.SelectNodes("a");
}

Nota che ho usato un selettore XPath che catturerà tutti gli elementi l1 nel documento (usando il comando // ), per essere più specifico potresti anche fare:

HtmlDocument doc = new HtmlDocument();
doc.Load(@"test.html");

var l1s = doc.DocumentNode.SelectNodes("//l1");
foreach (var item in l1s)
{
    var links = item.SelectNodes("a");
}



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é