通過HtmlAgilityPack獲取屬性的值

c# html-agility-pack

我想通過HtmlAgilityPack獲取屬性的值。 Html代碼:

<link href="style.css">
<link href="anotherstyle.css">
<link href="anotherstyle2.css">
<link itemprop="thumbnailUrl" href="http://image.jpg">
<link href="anotherstyle5.css">
<link href="anotherstyle7.css">

我想獲得最後一個href屬性。

我的c#代碼:

HtmlWeb web = new HtmlWeb();
HtmlAgilityPack.HtmlDocument htmldoc = web.Load(Url);
htmldoc.OptionFixNestedTags = true;
var navigator = (HtmlNodeNavigator)htmldoc.CreateNavigator();
string xpath = "//link/@href";
string val = navigator.SelectSingleNode(xpath).Value;

但該代碼返回第一個href值。

熱門答案

以下XPath選擇已定義href屬性的link元素。然後從您選擇最後一個的鏈接:

var link = doc.DocumentNode.SelectNodes("//link[@href]").LastOrDefault();
// you can also check if link is not null
var href = link.Attributes["href"].Value; // "anotherstyle7.css"

您還可以使用last() XPath運算符

var link = doc.DocumentNode.SelectSingleNode("/link[@href][last()]");
var href = link.Attributes["href"].Value;

更新:如果你想獲得同時具有itemprophref屬性的最後一個元素,那麼使用XPath //link[@href and @itemprop][last()]//link[@href and @itemprop]如果你將採取第一種方法。




許可下: CC-BY-SA with attribution
不隸屬於 Stack Overflow
這個KB合法嗎? 是的,了解原因
許可下: CC-BY-SA with attribution
不隸屬於 Stack Overflow
這個KB合法嗎? 是的,了解原因