【发布时间】:2020-05-13 18:32:41
【问题描述】:
我有以下 html 字符串(HTML 的简化版本,不受我控制):
<html>
<head>
<title/>
</head>
<body>
<p>
Hello How are you doing?
</p>
</body>
</html>
我正在使用以下代码使用 HtmlAgilityPack 对其进行解析:
HtmlDocument htmlDoc = new HtmlDocument();
htmlDoc.LoadHtml(htmlStr);
但这是htmlDoc.DocumentNode.InnerHtml的值:
<html>
<head>
<title></title></head></html>
如您所见,没有正确解析 html。
经过反复试验,我注意到在将 html 字符串中的 <title/> 替换为 <title></title> 时,文档被正确解析。如何正确解析带有 HAP 的 HTML 文档?
小提琴链接:https://dotnetfiddle.net/CZv09l
编辑
源 html 字符串不在我的控制范围内,尽管在使用 HAP 解析之前,我可以替换所有自关闭的 <title/>,但我不确定对所有其他自关闭标签这样做是否可行,因为我发现 HAP 也不适用于 <p/>。或者有没有一种快速的方法可以用扩展版本替换所有自封闭标签? (我正在考虑这里的额外费用,因为在用户等待它们完成时,我可能需要为大约 70 个大型 html 文件执行此操作)
<p/> - https://dotnetfiddle.net/VGJ1G6 问题的小提琴链接
【问题讨论】:
-
标题标签不应自闭,因此这是无效的 HTML。如果您对此有控制权,请填充标签或完全省略它。
-
@JonathonChase OP 声明输入不受他们控制。由于 HtmlAgilityPack 声明它们可以容忍格式错误的文档,这看起来像是一个错误。
-
我已编辑问题以添加更多详细信息。感谢您迄今为止的所有帮助。
标签: c# html html-agility-pack