Reputation: 20468
Here is html codes :
<div id="frmPnlProductGallery">
<ul class="clearfix">
<li>
<a data-index="0" class="productItem" href="javascript:void(0)" title="https://file.digi-kala.com/digikala/Image/Webstore/ProductPhoto/P_118274/Original/234942.jpg" rel="dk-gallery-item" data-imgurl="https://file.digi-kala.com/digikala/Image/Webstore/ProductPhoto/P_118274/Original/234942.jpg">
</a>
</li>
<li>
<a data-index="1" class="productItem" href="javascript:void(0)" title="https://file.digi-kala.com/digikala/Image/Webstore/ProductPhoto/P_118274/Original/c9ebc3.jpg" rel="dk-gallery-item" data-imgurl="https://file.digi-kala.com/digikala/Image/Webstore/ProductPhoto/P_118274/Original/c9ebc3.jpg">
</a>
</li>
<li>
<a data-index="2" class="productItem" href="javascript:void(0)" title="https://file.digi-kala.com/digikala/Image/Webstore/ProductPhoto/P_118274/Original/12199f.jpg" rel="dk-gallery-item" data-imgurl="https://file.digi-kala.com/digikala/Image/Webstore/ProductPhoto/P_118274/Original/12199f.jpg">
</a>
</li>
</ul>
</div>
Now i want to grab three title=
into a List<string>
.
Here is the codes :
var lis = htmlDoc.DocumentNode.SelectNodes("//div[@id='frmPnlProductGallery']//ul//li");
List<string> ls_images = new List<string>();
Now how can i grab those three titles?
Upvotes: 1
Views: 1611
Reputation: 2766
Add /a to your xpath and select title attribute
List<string> ls_images = htmlDoc.DocumentNode
.SelectNodes(@"div[@id='frmPnlProductGallery']/ul/li/a")
.Select(x => x.GetAttributeValue("title", string.Empty))
.ToList();
Upvotes: 1
Reputation: 3208
You can use Linq here. For example
document.DocumentNode.Descendants("a").Where(_ => _.HasClass("productItem")).Select(_ => _.GetAttributeValue("title", ""));
This is the HasClass
extension method:
public static bool HasClass(this HtmlNode node, params string[] classValueArray)
{
var classValue = node.GetAttributeValue("class", "");
var classValues = classValue.Split(' ');
return classValueArray.All(c => classValues.Contains(c));
}
Upvotes: 2