2010-10-05 97 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