如何删除文档中某处上方和下方的节点
How to remove nodes above and below somewhere in the document
假设我有一个 HtmlNode
指向 table 的实例,我怎样才能删除它上面和下面的所有节点?
我们可以假设 table 与 html 和正文标签
处于同一级别
<html>
<body>
<p>please remove me</p>
<table>
....
</table>
<p>please remove me</p>
<a> ... </a>
.
<img>...</img>
</body>
</html>
根据您的 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]
: select 直接跟随同级 元素而不考虑元素名称。
preceding-sibling::*[1]
: select 直接前面的同级 元素而不考虑元素名称。
|
: XPath 联合运算符组合两个不同的 XPath 表达式
假设我有一个 HtmlNode
指向 table 的实例,我怎样才能删除它上面和下面的所有节点?
我们可以假设 table 与 html 和正文标签
<html>
<body>
<p>please remove me</p>
<table>
....
</table>
<p>please remove me</p>
<a> ... </a>
.
<img>...</img>
</body>
</html>
根据您的 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]
: select 直接跟随同级 元素而不考虑元素名称。preceding-sibling::*[1]
: select 直接前面的同级 元素而不考虑元素名称。|
: XPath 联合运算符组合两个不同的 XPath 表达式