c#htmlagilitypack选择嵌套元素中的第一个标记

时间:2015-11-02 13:39:24

标签: c#

这是我的HTML代码。如何在每个div标签之后选择第一个链接(a)

<div class="test">
    <a></a>
    <a></a>
</div>
<div class="test">
    <a></a>
    <a></a>
</div>
<div class="test">
    <a></a>
    <a></a>
</div>

我尝试过使用一个斜杠://div[@class="test"]/a但它同时选择了两个斜杠

2 个答案:

答案 0 :(得分:4)

像这样(使用索引):

var elements = something.SelectNodes("//div[@class=\"test\"]/a[1]");

答案 1 :(得分:2)

string html = @"<div class=""test"">
    <a></a>
    <a></a>
  </div>");

var firstAnchor = doc.DocumentNode
     .SelectSingleNode("//div[contains(@class,'test')]")
     .SelectSingleNode("//a");

或使用以下语法:

var firstDiv = doc.DocumentNode.Descendants("div")
    .Where(n => n.GetAttributeValue("class", "").Equals("test", StringComparison.InvariantCultureIgnoreCase))
    .FirstOrDefault();
if (firstDiv != null)
{
    var firstAnchor = firstDiv.Descendants("a").FirstOrDefault();
}