使用HTMLAgilityPack和XPath获取childNodes的问题

c# html-agility-pack xpath

我试图解析以下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);
}

一般承认的答案

从我可以收集到的,我认为它不起作用,因为您正在使用的xpath期望节点是您的h4节点的子节点,我没有测试过这个,并且可能缺少解释您的要求但是......

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

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

希望这可以帮助



许可下: CC-BY-SA with attribution
不隶属于 Stack Overflow
这个KB合法吗? 是的,了解原因
许可下: CC-BY-SA with attribution
不隶属于 Stack Overflow
这个KB合法吗? 是的,了解原因