HTML легко (HTML Agility Pack)
Часто или редко, но многим приходилось иметь дело с разбором HTML страниц. И очень при этом повезет, если попадется XHTML страница, а как же быть с обычными HTML страницами, да еще и не всегда безошибочно составленными? Ведь
хочется
работать с ними как с XML документами,
преобразовывать, делать обход и XPATH выборки ...
Ранее приходилось не раз пользоваться
HTML Tody, точне его обверткой для C#, но он не всегда верно работал, да и само по себе использование обверток не радует... Ну, как минимум, меня

Но вот недавно наткнулся на полезную библиотеку, возможно, это и не сильно новость, но раз уж она только попала ко мне в руки, думаю многим будет полезным на нее взглянуть.
Итак, HTML Agility Pack от Simon Mourier. Очень полезная библиотека, предоставляющая нам класс HTMLDocument - полный аналог XMLDocument, но который с легкостью справляется с обычным HTML конетнтом.
HtmlDocument doc = new HtmlDocument();
doc.Load("file.htm");
foreach(HtmlNode link in doc.DocumentElement.SelectNodes("//a[@href]")
{
HtmlAttribute att = link.Attributes["href"];
att.Value = FixLink(att);
}
doc.Save("file.htm");
Т.е. есть возможность конвертации в XHTML, преобразования XSLT, работа с DOM и выполнение XPATH запросов.
Все очень удобно и привычно, что не может не радовать..
Есть еще в библиотеке несколько других полезных классов, но с ними пока не работал.
В комплекте идут полезные примерчики конвертеров HTML -> RSS, HTML -> TXT, HTML -> XHTML .. .
Всем советую посмотреть ...