期待どおりに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]"から前方スラッシュ接頭辞を削除する必要があります。

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

人気のある回答

xpathクエリでは、 "。"を使用することもできます。現在のノードで検索を開始する必要があることを示します。

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


Related

ライセンスを受けた: CC-BY-SA with attribution
所属していない Stack Overflow
ライセンスを受けた: CC-BY-SA with attribution
所属していない Stack Overflow