Ermittelt einen Wert eines Attributs nach HtmlAgilityPack

c# html-agility-pack

Frage

Ich möchte einen Wert eines Attributs mit HtmlAgilityPack erhalten. HTML Quelltext:

<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">

Ich möchte das letzte href-Attribut erhalten.

Mein c # -Code:

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;

Aber dieser Code gibt den ersten href-Wert zurück.

Beliebte Antwort

Folgend: XPath wählt link , für die das href Attribut definiert ist. Dann wählen Sie aus Links den letzten aus:

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"

Sie können auch den last() XPath-Operator verwenden

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

UPDATE: Wenn Sie das letzte Element mit den Attributen itemprop und href itemprop , verwenden Sie XPath //link[@href and @itemprop][last()] oder //link[@href and @itemprop] gehe mit dem ersten Ansatz.




Lizenziert unter: CC-BY-SA with attribution
Nicht verbunden mit Stack Overflow
Ist diese KB legal? Ja, lerne warum
Lizenziert unter: CC-BY-SA with attribution
Nicht verbunden mit Stack Overflow
Ist diese KB legal? Ja, lerne warum