我正在嘗試從一個HTML文檔中特定的圖像,使用HTML的靈活性包和此XPath:選擇屬性與HTML敏捷性包值
//div[@id='topslot']/a/img/@src
據我所看到的,它找到的SRC - 屬性,但它返回img標籤。這是爲什麼?
我期望InnerHtml/InnerText或東西被設置,但都是空字符串。 OuterHtml設置爲完整的img標籤。
是否有任何Html Agility Pack的文檔?
我正在嘗試從一個HTML文檔中特定的圖像,使用HTML的靈活性包和此XPath:選擇屬性與HTML敏捷性包值
//div[@id='topslot']/a/img/@src
據我所看到的,它找到的SRC - 屬性,但它返回img標籤。這是爲什麼?
我期望InnerHtml/InnerText或東西被設置,但都是空字符串。 OuterHtml設置爲完整的img標籤。
是否有任何Html Agility Pack的文檔?
Html敏捷包屬性選擇。
Html Agility Pack很快就會支持它。
http://htmlagilitypack.codeplex.com/Thread/View.aspx?ThreadId=204342
如果使用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敏捷性包
您可以讀取和HtmlAgilityPack的屬性設置屬性。本示例選擇< html>標記並選擇'lang'(language)屬性(如果它存在),然後讀取和寫入'lang'屬性。
在下面的示例中,doc.LoadHtml(this.All),「this.All」是一個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();
您可以指定屬性名稱以獲取其值;如果您不知道屬性名稱,請在獲取節點並將鼠標懸停在其上以查看其屬性後給出斷點。
希望我幫了忙。
我只是用它來選擇屬性align設置爲居中的所有div。 「// div [@ align ='center']」 – clamchoda 2013-10-15 20:30:52
這可能需要一些解決方法,請參閱下面的答案。 – 2014-10-02 12:38:18