You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

调用OuterHtml时HtmlAgilityPack抛出StackOverflow异常求助

问题原因

问题出在你用静态方法HtmlNode.CreateNode创建的tbody节点不属于当前的HtmlDocument实例——虽然通过AppendChild把它加到了table里,但节点内部的文档关联属性没同步好,生成OuterHtml时触发了无限递归,最后抛出StackOverflow异常。

解决方法

换成当前文档实例的CreateElement方法创建节点,确保所有节点都属于同一个文档上下文,就能正常生成预期的HTML:

var doc = new HtmlDocument();
var table = doc.CreateElement("table");
var tbody = doc.CreateElement("tbody");
table.AppendChild(tbody);
doc.DocumentNode.AppendChild(table);
var s = doc.DocumentNode.OuterHtml; // 返回<table><tbody></tbody></table>

如果一定要用HtmlNode.CreateNode,手动给节点设置OwnerDocument属性也能解决:

var doc = new HtmlDocument();
var table = HtmlNode.CreateNode("table");
table.OwnerDocument = doc;
var tbody = HtmlNode.CreateNode("tbody");
tbody.OwnerDocument = doc;
table.AppendChild(tbody);
doc.DocumentNode.AppendChild(table);
var s = doc.DocumentNode.OuterHtml;

内容的提问来源于stack exchange,提问作者MyDaftQuestions

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.02 02:51:56