如何select当前子节点中的所有标签"a"?
How to select all the tags "a" in the current child node?
在 HtmlAgilityPach 中,当我像这样 selecting 一个节点时:
var node1 = htmlDoc.GetElementbyId("some_id");
我想获取其子项中的所有子 "a" 标签。但是,这不起作用,因为它 returns 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
}
如您所见,最后一个方法 select 是整个(!)页面上的所有 "a" 标记,而不仅仅是当前 childItem 中的标记。我想知道为什么以及如何使它 select 只在 "childNode"?
您只需在 XPath 的开头添加一个点 (.
) 使其相对于当前 childItem
:
var a = childItem.SelectNodes(".//a");
在 HtmlAgilityPach 中,当我像这样 selecting 一个节点时:
var node1 = htmlDoc.GetElementbyId("some_id");
我想获取其子项中的所有子 "a" 标签。但是,这不起作用,因为它 returns 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
}
如您所见,最后一个方法 select 是整个(!)页面上的所有 "a" 标记,而不仅仅是当前 childItem 中的标记。我想知道为什么以及如何使它 select 只在 "childNode"?
您只需在 XPath 的开头添加一个点 (.
) 使其相对于当前 childItem
:
var a = childItem.SelectNodes(".//a");