如何删除文档中某处上下的节点

时间:2015-06-16 06:26:11

标签: c# html xpath html-agility-pack

假设我有HtmlNode的实例指向表,我该如何删除它上面和下面的所有节点? 我们可以假设表与html和body标签处于同一级别

<html>
<body>
<p>please remove me</p>

<table>
....
</table>

<p>please remove me</p>
<a> ... </a>
.
<img>...</img>
</body>
</html>

1 个答案:

答案 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表达式