使用HTMLAgilityPack和XPath获取childNodes的问题

时间:2012-01-16 10:22:17

标签: c# xpath html-agility-pack

我正在尝试解析以下HTML。我需要在h4标签下获取值为“Title”的所有链接的innertext。

<h4>Title</h4>
    <ul>
         <li>
             <a>One</a>
         </li>
         <li>
             <a>Two</a>
         </li>
         <li>
             <a>Three</a>
         </li>
    </ul>

我可以使用以下代码获取h4元素:

var links = document.DocumentNode.SelectNodes("//h4[contains(text(),'Title')]");

问题在于尝试获取节点。我尝试了以下代码但没有效果:

var urls = member.SelectNodes(".//a");

foreach (var url in urls)
{
    Console.WriteLine(url.InnerText);
}

1 个答案:

答案 0 :(得分:1)

从我可以收集的内容来看,我认为它不起作用,因为您使用的xpath期望节点是您的h4节点的子节点,我没有对此进行测试,但可能缺少解释您的要求但是。 ..

var links = document.DocumentNode.SelectNodes("//h4[contains(text(),'Title')]/following-sibling::*[1]//a");

这将获得在h4节点的第一个兄弟节点中找到的所有节点。因此,在您的示例HTML中,它应该获取ul节点中的所有节点

希望这有帮助