Usuń wszystkie puste / niepotrzebne węzły z HTML

Jaki byłby preferowany sposób usunięcia wszystkich pustych i niepotrzebnych węzłów? Na przykład

<p></p> należy usunąć i<font><p><span><br></span></p></font> należy również usunąć (dlatego tag br jest w tym przypadku uważany za niepotrzebny)

Czy będę musiał użyć do tego jakiejś funkcji rekurencyjnej? Myślę o czymś takim, może:

 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();
               }
           }
       }
  }

Ale to oczywiście nie działa (wyjątek stackoverflow).

questionAnswers(1)

yourAnswerToTheQuestion