HtmlAgilityPack選擇childNodes不符合預期

.net asp.net c# html-agility-pack xpath

我試圖使用HtmlAgilityPack庫來解析頁面中的一些鏈接,但我沒有看到我期望從這些方法得到的結果。在下面我有一個HtmlNodeCollection的鏈接。對於每個鏈接,我想檢查是否有圖像節點,然後解析其屬性,但linkNode的SelectNodes和SelectSingleNode方法似乎是在搜索父文檔而不是linkNode的childNodes給出了什麼?

HtmlDocument htmldoc = new HtmlDocument();
htmldoc.LoadHtml(content);
HtmlNodeCollection linkNodes = htmldoc.DocumentNode.SelectNodes("//a[@href]");

foreach(HtmlNode linkNode in linkNodes)
{
    string linkTitle = linkNode.GetAttributeValue("title", string.Empty);
    if (linkTitle == string.Empty)
    {
        HtmlNode imageNode = linkNode.SelectSingleNode("/img[@alt]");     
    }
}

有沒有其他方法我可以得到linkNode的image childnode的alt屬性,如果它存在?

一般承認的答案

您應該從“/ img [@alt]”中刪除forwardslash前綴,因為它表示您要從文檔的根目錄開始。

HtmlNode imageNode = linkNode.SelectSingleNode("img[@alt]");

熱門答案

使用xpath查詢,您還可以使用“。”表示搜索應該從當前節點開始。

HtmlNode imageNode = linkNode.SelectSingleNode(".//img[@alt]");



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