如何使用HTML敏捷包选择嵌套元素?

时间:2011-02-21 16:25:43

标签: c# html-agility-pack

我有以下类型的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标签,我想为当前的l1标签选择所有'a'标签。我该怎么办?

1 个答案:

答案 0 :(得分:7)

HtmlAgilityPack使用XPath selectors来选择节点。

对于你的问题,这可行:

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");