2015-06-16 3 views
0

Предполагая, что у меня есть экземпляр HtmlNode, указывающий на таблицу, как удалить все узлы выше и ниже? мы можем предположить, таблица находится в том же уровне HTML и тела тегаКак удалить узлы выше и ниже где-нибудь в документе

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

<table> 
.... 
</table> 

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

ответ

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
+0

правильно. То, что я имел в виду, было тем же самым уровнем тела. спасибо за подробный ответ. он отлично работает – DayDayHappy