Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

c# htmlagilitypack select first tag in nested elements

Tags:

c#

this is my html code. How to select first link(a) after each div tag

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

i've tried just using one slash : //div[@class="test"]/a but it selects both

like image 645
Nika Javakhishvili Avatar asked Oct 24 '25 04:10

Nika Javakhishvili


2 Answers

Like this (using index):

var elements = something.SelectNodes("//div[@class=\"test\"]/a[1]");
like image 70
Fᴀʀʜᴀɴ Aɴᴀᴍ Avatar answered Oct 25 '25 21:10

Fᴀʀʜᴀɴ Aɴᴀᴍ


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

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

or with this syntax:

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();
}
like image 43
Tim Schmelter Avatar answered Oct 25 '25 21:10

Tim Schmelter



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!