更新2:下面是一個代碼示例如何使用Html Agility Pack獲取屬性值:
http://htmlagilitypack.codeplex.com/wikipage?title=Examples
HtmlDocument doc = new HtmlDocument();
doc.Load("file.htm");
foreach(HtmlNode link in doc.DocumentElement.SelectNodes("//a[@href"])
{
HtmlAttribute att = link.Attributes["href"];
att.Value = FixLink(att);
}
doc.Save("file.htm");
你顯然需要將此代碼適應您的需求 - 比如你將不會修改屬性,而只是用att.Value
。
更新:您也可以看看這個問題:
Selecting attribute values with html Agility Pack
你的問題很可能是默認命名空間問題 - 搜索「的XPath默認命名空間C#「,你會發現很多好的解決方案(提示:使用SelectNodes()
,它有一個XmlNamespaceManager
變元)。
下面的代碼顯示了一個獲取對文檔中的一個屬性 「沒有命名空間」:
using System;
using System.IO;
using System.Xml;
public class Sample
{
public static void Main()
{
XmlDocument doc = new XmlDocument();
doc.LoadXml("<input value='novel' ISBN='1-861001-57-5'>" +
"<title>Pride And Prejudice</title>" +
"</input>");
XmlNode root = doc.DocumentElement;
XmlNode value = doc.SelectNodes("//input/@value")[0];
Console.WriteLine("Inner text: " + value.InnerText);
Console.WriteLine("InnerXml: " + value.InnerXml);
Console.WriteLine("OuterXml: " + value.OuterXml);
Console.WriteLine("Value: " + value.Value);
}
}
運行這個程序的結果是:
Inner text: novel
InnerXml: novel
OuterXml: value="novel"
Value: novel
現在,對於處於默認命名空間的文檔:
using System;
using System.IO;
using System.Xml;
public class Sample
{
public static void Main()
{
XmlDocument doc = new XmlDocument();
doc.LoadXml("<input xmlns='some:Namespace' value='novel' ISBN='1-861001-57-5'>" +
"<title>Pride And Prejudice</title>" +
"</input>");
XmlNode root = doc.DocumentElement;
XmlNamespaceManager nsmgr = new XmlNamespaceManager(doc.NameTable);
nsmgr.AddNamespace("x", "some:Namespace");
XmlNode value = doc.SelectNodes("//x:input/@value", nsmgr)[0];
Console.WriteLine("Inner text: " + value.InnerText);
Console.WriteLine("InnerXml: " + value.InnerXml);
Console.WriteLine("OuterXml: " + value.OuterXml);
Console.WriteLine("Value: " + value.Value);
}
}
運行這個程序,再想要的結果生產:
Inner text: novel
InnerXml: novel
OuterXml: value="novel"
Value: novel
你試過'node [0] .Value'嗎? – Oded 2011-12-29 10:55:13
不,因爲我想通過'node [0] .InnerText' – 2011-12-29 10:59:05
獲取值但是一個屬性沒有'InnerText'。 – Oded 2011-12-29 12:16:31