Удалить все пустые / ненужные узлы из HTML

Какой предпочтительный способ удалить все пустые и ненужные узлы? Например

<p></p> должны быть удалены и<font><p><span><br></span></p></font> также следует удалить (поэтому в этом случае тег br считается ненужным)

Должен ли я использовать какую-то рекурсивную функцию для этого? Я думаю что-то вроде этого:

 RemoveEmptyNodes(HtmlNode containerNode)
 {
     var nodes = containerNode.DescendantsAndSelf().ToList();

      if (nodes != null)
      {
          foreach (HtmlNode node in nodes)
          {
              if (node.InnerText == null || node.InnerText == "")
              {
                   RemoveEmptyNodes(node.ParentNode);
                   node.Remove();
               }
           }
       }
  }

Но это, очевидно, не работает (исключение stackoverflow).

Ответы на вопрос(1)

Ваш ответ на вопрос