gpt4 book ai didi

c# - HtmlAgilityPack 无法解析带有 <title/> 的 html

转载 作者:行者123 更新时间:2023-12-04 10:51:18 25 4
gpt4 key购买 nike

我有以下 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 未正确解析。

在一些试验和错误中,我注意到替换 <title/>在带有 <title></title> 的 html 字符串中,文档被正确解析。如何使用 HAP 正确解析此类 HTML 文档?

fiddle 链接: https://dotnetfiddle.net/CZv09l

编辑

源 html 字符串不在我的控制范围内,但在使用 HAP 解析之前,我可以替换所有自关闭 <title/>但我不确定对所有其他自闭合标签是否可行,因为我发现 HAP 不适用于 <p/>以及。或者是否有一种快速的方法可以用它们的扩展版本替换所有自闭合标签? (我正在考虑这里的额外费用,因为在用户等待它们完成时,我可能需要为大约 70 个大型 html 文件执行此操作)
<p/> 问题的 fiddle 链接- https://dotnetfiddle.net/VGJ1G6

最佳答案

您可以找到解析 html 标签的默认设置 here在源代码中。更改 <title> 的设置标签有助于解析您的 html:

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

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

Fiddler code.
同样,您可以轻松更改所有需要的标签的默认行为。
也已经为 <p> 定义了设置标签:
HtmlDocument.DisableBehaviorTagP = false; //false for automatically closing

关于c# - HtmlAgilityPack 无法解析带有 &lt;title/> 的 html,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59458767/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com