質問

いを取り出そうとすると、特定の画像からhtml文書のhtmlを利用したアジリティパックは、このxpath:

//div[@id='topslot']/a/img/@src

調査を実施しているのは、同じ覧できるようにするためのlibsoupおよ、src属性でを返しますimg-タグです。この理由は何でしょうか?

私は期待のInnerHtml/InnerTextは何かを設定することができるで空の文字列です。OuterHtml設定のimgタグ.

ある文書をHtmlにアジリティパック?

役に立ちましたか?

解決

Htmlの敏捷性パックの属性選択をサポートしていません。

他のヒント

あなたの代わりにHtmlNavigatorを使用する場合は、

あなたは直接属性をつかむことができます。

//Load document from some html string
HtmlDocument hdoc = new HtmlDocument();
hdoc.LoadHtml(htmlContent);

//Load navigator for current document
HtmlNodeNavigator navigator = (HtmlNodeNavigator)hdoc.CreateNavigator();

//Get value from given xpath
string xpath = "//div[@id='topslot']/a/img/@src";
string val = navigator.SelectSingleNode(xpath).Value;

は、メソッド "GetAttributeValue" を使用することができます。

例:

//[...] code before needs to load a html document
HtmlAgilityPack.HtmlDocument htmldoc = e.Document;
//get all nodes "a" matching the XPath expression
HtmlNodeCollection AllNodes = htmldoc.DocumentNode.SelectNodes("*[@class='item']/p/a");
//show a messagebox for each node found that shows the content of attribute "href"
foreach (var MensaNode in AllNodes)
{
     string url = MensaNode.GetAttributeValue("href", "not found");
     MessageBox.Show(url);
}

Htmlの敏捷性パックはすぐにそれをサポートしています。

http://htmlagilitypack.codeplex.com/Thread/View.aspx ?スレッドID = 204342

読み書きの属性をHtmlで行うアジリティパック

き読み取りと書き込みの両方のセットの属性HtmlAgilityPack.この例の選択 < html>タグを選択し、'lang'(言語)の属性が存在していれば、それを読み込みおよび書き込みには'lang'属性。

以下の例では、doc.LoadHtml(ます。全てをする人が多くなっています。すべての"文字列表現したhtmlドキュメント

読み書き:

            HtmlAgilityPack.HtmlDocument doc = new HtmlAgilityPack.HtmlDocument();
            doc.LoadHtml(this.All);
            string language = string.Empty;
            var nodes = doc.DocumentNode.SelectNodes("//html");
            for (int i = 0; i < nodes.Count; i++)
            {
                if (nodes[i] != null && nodes[i].Attributes.Count > 0 && nodes[i].Attributes.Contains("lang"))
                {
                    language = nodes[i].Attributes["lang"].Value; //Get attribute
                    nodes[i].Attributes["lang"].Value = "en-US"; //Set attribute
                }
            }

読み取りのみ:

            HtmlAgilityPack.HtmlDocument doc = new HtmlAgilityPack.HtmlDocument();
            doc.LoadHtml(this.All);
            string language = string.Empty;
            var nodes = doc.DocumentNode.SelectNodes("//html");
            foreach (HtmlNode a in nodes)
            {
                if (a != null && a.Attributes.Count > 0 && a.Attributes.Contains("lang"))
                {
                    language = a.Attributes["lang"].Value;
                }
            }

私は、画像の属性を取得するには、次の方法を使用していました。

var MainImageString  = MainImageNode.Attributes.Where(i=> i.Name=="src").FirstOrDefault();

あなたは、その値を取得する属性名を指定することができます。あなたは属性名がわからない場合、あなたはノードをフェッチし、それの上にマウスを移動することによって、その属性を表示した後にブレークポイントを与えます。

は、私は助けを願っています。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top