Как выбрать вложенные элементы, используя пакет agility HTML? - PullRequest
6 голосов
/ 21 февраля 2011

У меня есть следующий вид 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>

Я хочу выбрать коллекцию тегов l1 и для каждого тега l1 я хочу выбрать все теги 'a' для текущего тега l1.как мне это сделать ??

1 Ответ

7 голосов
/ 21 февраля 2011

HtmlAgilityPack использует XPath селекторы для выбора узлов.

Для вашей проблемы это будет работать:

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

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

Обратите внимание, что я использовал селектор XPath, который будет захватывать все l1 элементов в документе (используя ведущий //), чтобы быть более точным, вы также можете сделать:

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