使用HTMLAgilityPack和XPath获取childNodes时出现问题

本文关键字:问题 childNodes 获取 HTMLAgilityPack XPath 使用 | 更新日期: 2023-09-27 18:20:20

我正在尝试解析以下HTML。我需要获取值为"Title"的h4标记下所有链接的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')]");

尝试获取a节点时会出现问题。我尝试过以下代码,但都不起作用:

var urls = member.SelectNodes(".//a");
foreach (var url in urls)
{
    Console.WriteLine(url.InnerText);
}

使用HTMLAgilityPack和XPath获取childNodes时出现问题

据我所知,我认为它不起作用,因为您使用的xpath希望a节点是您的h4节点的子节点,我还没有测试过,可能没有解释您的需求,但。。。

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

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

希望这能帮助