如何选择所有标签“;a“;在当前子节点中

本文关键字:子节点 标签 何选择 选择 | 更新日期: 2023-09-27 18:22:25

在HtmlAgilityPach中,当我选择这样一个节点时:

  var node1 = htmlDoc.GetElementbyId("some_id");

我想在其子代中获取所有子代"a"标签。然而,这不起作用,因为它返回null:

foreach (var childItem in node1.ChildNodes) {
  var a = childItem.SelectNodes("a") // null
  var a = childItem.SelectNodes("/a") // null
  var a = childItem.SelectNodes("//a") // not null but select all the "a" tags on the whole(!) page, not only the ones within current childItem
}

正如您所看到的,最后一个方法选择了整个(!)页面上的所有"a"标记,而不仅仅是当前childItem中的标记。我想知道为什么以及如何让它只选择"childNode"中的那些?

如何选择所有标签“;a“;在当前子节点中

您只需要在XPath的开头添加一个点(.),使其相对于当前childItem:

var a = childItem.SelectNodes(".//a");