我有一个HTML文件,它在语法上不正确,我用HTML Agility Pack解析它。
但如果我有像
这样的链接 <a href="http://google.com/!/!!!">Google</a>
这是一个问题,是否有可能的方法来检测损坏的链接,以便在找到错误时(该链接上没有可用的页面),应用程序会将该链接存储在列表中并返回它?
标签上的同样问题,例如:
<img hhh="jjj"/>
这里的图像标记都是错误的,这也应该在'修复错误'列表中。
提前致谢。
答案 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 }