Cómo limpiar HTML mal formado usando HTML Agility Pack

Estoy tratando de reemplazar esta horrible colección de expresiones regulares que actualmente se usa para limpiar bloques de HTML mal formado y tropecé con el paquete de agilidad HTML para C #. Se ve muy poderoso pero, sin embargo, no pude encontrar un ejemplo de cómo quiero usar el paquete que, en mi opinión, sería una funcionalidad deseada incluida en él. Estoy seguro de que soy un idiota y no puedo encontrar un método adecuado en la documentación.

Permítanme explicar ... digamos que tenía el siguiente html:

<p class="someclass">
    <font size="3">
        <font face="Times New Roman">
            this is some text
            <a href="somepage.html">Some link</a>
        </font>
    </font>
</p>

... que quiero lucir así:

<p>
    this is some text
    <a href="somepage.html">Some link</a>
</p>

Cuando utilizo el método HtmlNode.Remove (), elimina el nodo más todos sus hijos. ¿Hay alguna forma de eliminar el nodo que preserva a los hijos?

Respuestas a la pregunta(3)

Su respuesta a la pregunta