C# HtmlAgilityPack无法使用<;解析html;标题/>;

C# HtmlAgilityPack无法使用<;解析html;标题/>;,c#,html,html-agility-pack,C#,Html,Html Agility Pack,我有以下html字符串(不受我控制的html简化版本): 但这是htmlDoc.DocumentNode.InnerHtml的值: <html> <head> <title></title></head></html> 如您所见,html解析不正确 在一些尝试和错误中,我注意到用替换html字符串中的时,文档被正确解析。如何使用HAP正确解析此类HTML文档 小提琴链接: 编辑 源html字符串不在我的控制

我有以下html字符串(不受我控制的html简化版本):

但这是
htmlDoc.DocumentNode.InnerHtml的值:

<html>
  <head>
    <title></title></head></html>

如您所见,html解析不正确

在一些尝试和错误中,我注意到用
替换html字符串中的
时,文档被正确解析。如何使用HAP正确解析此类HTML文档

小提琴链接:

编辑 源html字符串不在我的控制范围内,虽然在使用HAP解析之前,我可以替换所有自关闭的
,但我不确定对所有其他自关闭标记是否可行,因为我发现HAP也不能很好地与

一起工作。或者有没有一种快速的方法可以用扩展版本替换所有的自关闭标签?(我正在考虑这里的额外成本,因为在用户等待完成时,我可能不得不对大约70个大型html文件执行此操作)


有关

-

问题的FIDLE链接您可以在源代码中找到解析html标记的默认设置。更改
标记的设置有助于解析html:

HtmlNode.ElementsFlags["title"] = HtmlElementFlag.Closed;

var htmlDoc = new HtmlDocument();
htmlDoc.LoadHtml(html);

同样,您可以轻松更改所有所需标记的默认行为。
另外,已经为
标记定义了设置:

HtmlDocument.DisableBehaviorTagP = false; //false for automatically closing

标题标记不应该是自动关闭的,因此这是无效的HTML。如果你能控制这个,要么填充标签,要么完全忽略它。这能回答你的问题吗@JonathonChase OP表示输入不受其控制。由于HtmlAgilityPack声明它们可以容忍格式错误的文档,这看起来像是一个bug。我编辑了这个问题以添加更多细节。谢谢你迄今为止的帮助。非常感谢你的帮助。我试图了解这些更改将如何影响其他html文档的解析?如果您还可以帮助了解这些枚举如何影响解析,请选择HtmlElementFlag.Empty、HtmlElementFlag.CData、HtmlElementFlag.Closed。通过阅读评论,我有了一些感觉,但仍在询问,以防你能提供更多细节。不幸的是,除了从评论中得到的信息,我不知道更多细节,无法帮助你评估影响。
HtmlNode.ElementsFlags["title"] = HtmlElementFlag.Closed;

var htmlDoc = new HtmlDocument();
htmlDoc.LoadHtml(html);
HtmlDocument.DisableBehaviorTagP = false; //false for automatically closing