XPATHを使用してHTMLアジャイルパックでメタタグ属性を取得する

html html-agility-pack xpath

質問

META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1" />
TITLE>Microsoft Corporation
META http-equiv="PICS-Label" content="(PICS-1.1 "http://www.rsac.org/ratingsv01.html" l gen true r (n 0 s 0 v 0 l 0))" />
META NAME="KEYWORDS" CONTENT="products; headlines; downloads; news; Web site; what's new; solutions; services; software; contests; corporate news;" />
META NAME="DESCRIPTION" CONTENT="The entry page to Microsoft's Web site. Find software, solutions, answers, support, and Microsoft news." />
META NAME="MS.LOCALE" CONTENT="EN-US" />
META NAME="CATEGORY" CONTENT="home page" />

HTML Agility Packを使用してCategoryメタタグのContent属性の値を取得するために必要なXPATHを知りたい。 (htmlコードの各行の最初の<を削除して投稿します)。

受け入れられた回答

長い間、HtmlAgilityPackには属性値を直接照会する機能がありませんでした 。あなたは、メタノードのリストをループする必要がありました。ここに一つの方法があります -

var doc = new HtmlDocument();
doc.LoadHtml(htmlString);

var list = doc.DocumentNode.SelectNodes("//meta"); 
foreach (var node in list)
{
    string content = node.GetAttributeValue("content", "");
}

しかし、あなたがそれを行えるようにする実験的なxpathリリースがあるように見えます。

doc.Document.SelectNodes("//meta/@content") 

HtmlAttributeオブジェクトのリストを返します。


人気のある回答

メタタグにタイトル、説明、キーワードを表示させたい場合は、

 if (metaTags != null)
        {
            foreach (var tag in metaTags)
            {
                if ((tag.Attributes["name"] != null) & (tag.Attributes["content"] != null))
                {
                       Panel divPage = new Panel();                        
                       divPage.InnerHtml = divPage.InnerHtml + "<br /> " +
                        "<b> Page " + tag.Attributes["name"].Value + " </b>: " +
                            tag.Attributes["content"].Value + "<br />";
                }
            }
        }

リンクからog:tagsを取得する場合は、このコードを追加してください

            if ((tag.Attributes["property"] != null) & (tag.Attributes["content"] != null))
            {
                if (tag.Attributes["property"].Value == "og:image")
                {
                    img.ImageUrl = tag.Attributes["content"].Value;
                }

            }

これは素晴らしい経験です...私は:)このコードは今まで好きです



ライセンスを受けた: CC-BY-SA with attribution
所属していない Stack Overflow
このKBは合法ですか? はい、理由を学ぶ
ライセンスを受けた: CC-BY-SA with attribution
所属していない Stack Overflow
このKBは合法ですか? はい、理由を学ぶ