選定の属性値とhtmlのアジリティパック
-
23-08-2019 - |
質問
いを取り出そうとすると、特定の画像から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();
あなたは、その値を取得する属性名を指定することができます。あなたは属性名がわからない場合、あなたはノードをフェッチし、それの上にマウスを移動することによって、その属性を表示した後にブレークポイントを与えます。
は、私は助けを願っています。