我想从这里得到href-link:
<a class="abc" href="/subsite/2014/05/19/site.html"> <p>test1</p><p>test2</p> </a>
我正在尝试这个:
var nodes = doc.DocumentNode.SelectNodes("//a[@class='abc']/@href");
... InnerHtml变为<p>test1</p><p>test2</p>
,而不是href ...
答案 0 :(得分:0)
正如HtmlAgilityPack创建者@SimonMourier,here所解释的那样,您无法直接使用SelectNodes()
来获取属性(因为方法名称和返回类型意味着,这意味着选择节点。)
你需要采用不同的方法。尝试选择节点而不是属性,然后可以使用LINQ扩展方法提取每个选定节点的属性,例如:
var attrs = doc.DocumentNode
.SelectNodes("//a[@class='abc' and @href]")
.Select(o => o.Attributes["href"]);
答案 1 :(得分:0)
这也会起作用,如@Tomalak的链接中所述。
//Load navigator for current document
HtmlNodeNavigator navigator = (HtmlNodeNavigator)doc.CreateNavigator();
//Get value from given xpath
string xpath = "//a[@class='abc']/@href";
var val = navigator.Select(xpath);