2010-10-05 93 views
4

我有一个HTML文件,它在语法上不正确,我用HTML Agility Pack解析它。使用C#,如何检测断开的链接或标记?

但是,如果我有一个像

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

链接这是一个问题,是有可能的方式,这样,当发现错误检测损坏的链接(无页是可用的链接)的应用程序会将该链接存储在列表中并返回它?在标签上

同样的问题,例如:

<img hhh="jjj"/> 

这里的图像标签是完全错误的,这应该是在“错误的修复名单了。

在此先感谢。

回答

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 } 
+0

我已经做到了:)但问题是我怎么才能发现链接是不好的或不是... – 2010-10-05 12:18:46

+1

您可以使用WebClient类来请求URL并查看是否有异常。 – SLaks 2010-10-05 12:19:14

+1

嗯,这很好,但对于img标签,例如?或身体标签等,有没有一种通用的方法来修复它们? – 2010-10-05 12:21:01