假设我有HtmlNode
的实例指向表,我该如何删除它上面和下面的所有节点?
我们可以假设表与html和body标签处于同一级别
<html>
<body>
<p>please remove me</p>
<table>
....
</table>
<p>please remove me</p>
<a> ... </a>
.
<img>...</img>
</body>
</html>
答案 0 :(得分:1)
根据您的HTML示例(通常是这样),<table>
是<body>
的孩子,他们不在同一级别。假设table
是指向HtmlNode
元素的<table>
类型的变量,您可以这样做:
var nodes = table.SelectNodes("following-sibling::*[1] | preceding-sibling::*[1]");
foreach (HtmlNode node in nodes)
{
node.Remove();
}
关于正在使用的XPath的简要说明:
following-sibling::*[1]
:无论元素名称如何,选择直接跟随兄弟元素。preceding-sibling::*[1]
:选择直接在先兄弟元素,无论元素名称如何。|
:XPath联合运算符,用于组合两个不同的XPath表达式