Entfernen Sie alle leeren / unnötigen Knoten aus HTML

Was wäre der bevorzugte Weg, um alle leeren und unnötigen Knoten zu entfernen? Zum Beispiel

<p></p> sollte entfernt werden und<font><p><span><br></span></p></font> sollte auch entfernt werden (daher wird das br-Tag in diesem Fall als unnötig angesehen)

Muss ich dafür eine Art rekursive Funktion verwenden? Ich denke etwas in der Art von vielleicht:

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

Das funktioniert aber offensichtlich nicht (Stackoverflow-Ausnahme).

Antworten auf die Frage(1)

Ihre Antwort auf die Frage