Получить значение атрибута 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 выбирает элементы link которые имеют атрибут href . Затем из ссылок вы выбираете последний:

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;

UPDATE: если вы хотите получить последний элемент с itemprop и href , используйте //link[@href and @itemprop][last()] XPath //link[@href and @itemprop][last()] или //link[@href and @itemprop] если вы идти с первым подходом.



Related

Лицензировано согласно: CC-BY-SA with attribution
Не связан с Stack Overflow
Лицензировано согласно: CC-BY-SA with attribution
Не связан с Stack Overflow