Comment sélectionner des éléments imbriqués à l'aide du pack d'agilité HTML?

c# html-agility-pack

Question

J'ai un type de xml / html suivant

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

Je souhaite sélectionner une collection de balises l1 et pour chaque balise l1, je souhaite sélectionner toutes les balises "a" pour la balise l1 actuelle. Comment fait-on ça??

Réponse acceptée

HtmlAgilityPack utilise les sélecteurs XPath pour sélectionner les nœuds.

Pour votre problème, cela fonctionnerait:

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

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

Notez que j'ai utilisé un sélecteur XPath qui récupérera tous les éléments l1 du document (en utilisant // ), pour être plus précis, vous pouvez également le faire:

var l1s = doc.DocumentNode.SelectNodes("root/p1/l1");



Sous licence: CC-BY-SA with attribution
Non affilié à Stack Overflow
Est-ce KB légal? Oui, apprenez pourquoi
Sous licence: CC-BY-SA with attribution
Non affilié à Stack Overflow
Est-ce KB légal? Oui, apprenez pourquoi