使用C#,如何检测断开的链接或标记?

时间:2010-10-05 12:11:41

标签: c# html error-handling html-agility-pack

我有一个HTML文件,它在语法上不正确,我用HTML Agility Pack解析它。

但如果我有像

这样的链接

<a href="http://google.com/!/!!!">Google</a>

这是一个问题,是否有可能的方法来检测损坏的链接,以便在找到错误时(该链接上没有可用的页面),应用程序会将该链接存储在列表中并返回它?

标签上的同样问题,例如:

<img hhh="jjj"/>

这里的图像标记都是错误的,这也应该在'修复错误'列表中。

提前致谢。

1 个答案:

答案 0 :(得分:3)

您需要遍历Document.DocumentNode.Descendants("a")并检查href标记是否错误。

同样,您可以循环浏览Document.DocumentNode.Descendants("img")并检查src属性。

修改

要检查错误的属性,您可以维护Dictionary<string, IEnumerable<string>>将标记名称映射到有效属性,然后使用LINQ查找缺少的属性,如下所示:

from tag in Document.DocumentNode.Descendants()
let legalAttributes = allAttributes[tag.TagName]
from attribute in tag.Attributes
where !legalAttributes.Contains(attribute.Name, StringComparer.OrdinalIgnoreCase)
select new { Tag = tag.OuterHtml, Attribute = attribute.Name }