如何编写从html获取href的xpath-string

时间:2014-05-19 16:57:05

标签: html xpath html-agility-pack

我想从这里得到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 ...

中的链接

2 个答案:

答案 0 :(得分:0)

正如HtmlAgilityPack创建者@SimonMourierhere所解释的那样,您无法直接使用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);