Я думаю, что достиг этого, используя этот ответ:
Как удалить элементы из xml, используя xslt с таблицей стилей и xsltproc?
Это делается с использованием простого XSL, поэтому я не знаю, поможет ли это с HTMLAgilityPack.
Вот XSL, который я использовал:
<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:msxsl="urn:schemas-microsoft-com:xslt" exclude-result-prefixes="msxsl">
<xsl:output method="xml" indent="yes"/>
<xsl:template match="node()|@*">
<xsl:copy>
<xsl:apply-templates select="node()|@*"/>
</xsl:copy>
</xsl:template>
<xsl:template match="form"/>
</xsl:stylesheet>
РЕДАКТИРОВАТЬ: просто быстро взглянул на код HtmlAgilityPack и обнаружил, что это должно сработать:
HtmlAgilityPack.HtmlNode node;
node = htmldoc.DocumentNode.SelectSingleNode("//form");
node.ParentNode.RemoveChild(node, false);
но по какой-то причине он удалил только открывающий тег.