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;

UPDATE: itemprop属性とhref属性の両方を持つ最後の要素を取得する場合は、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は合法ですか? はい、理由を学ぶ