Собираю перед показом в WebBrowser HTML код из кусков. Куски эти зачастую оказываются несколько невалидны и содержат кое-что лишнее. Хотелось бы предварительно очищать их от скриптов, заменять объекты типа джавы или флеша заглушками, а также закрывать все открытые в куске теги. Вобщем извечный вопрос "что делать?", изобретать нечто своё или есть что-то подходящее готовое?
... << My edition based on RSDN@Home 1.2.0 alpha 4 rev. 1476 >>
Здравствуйте, stele, Вы писали:
Html Agility Pack
Здравствуйте, 1stein, Вы писали:
1>Html Agility Pack
А как в нём скажем тот же тег object целиком заменять на конструкцию типа
<a href"кудатотуды.рф"><img src="stub.png"></a>
в той-же позиции относительно остального текста?
И по поводу скриптов. Их надо вручную искать или есть механизм сразу выбирающий все script, onclick и подобное?
... << My edition based on RSDN@Home 1.2.0 alpha 4 rev. 1476 >>
Здравствуйте, stele, Вы писали:
S>А как в нём скажем тот же тег object целиком заменять на конструкцию типаS><a href"кудатотуды.рф"><img src="stub.png"></a>
S>
в той-же позиции относительно остального текста?
S>И по поводу скриптов. Их надо вручную искать или есть механизм сразу выбирающий все script, onclick и подобное?
XPath
как-то так
HtmlDocument html = new HtmlDocument();
var request = WebRequest.Create("http://www.rsdn.ru/Forum/MainList.aspx") as HttpWebRequest;
using (var response = request.GetResponse())
using( var responseStream = response.GetResponseStream())
{
html.Load(responseStream);
}
var hyperlinks = html.DocumentNode.SelectNodes("//a");
foreach (HtmlNode hyperlink in hyperlinks)
{
var nodeForReplace = HtmlNode.CreateNode("<a href='http://rsdn.ru' ><img src='http://rsdn.ru/Images/rsdntop.gif' /></a>");
hyperlink.ParentNode.ReplaceChild(nodeForReplace, hyperlink);
}
var hiddenValues = html.DocumentNode.SelectNodes("//input[@type='hidden']");
foreach (HtmlNode hidden in hiddenValues)
{
hidden.Remove();
}
var alignedNodes = html.DocumentNode.SelectNodes("//*/@align");
if (alignedNodes != null)
{
foreach (HtmlNode node in alignedNodes)
node.Attributes["align"].Value = "left";
}
html.Save("rsdn.html", Encoding.GetEncoding(1251));
Здравствуйте, 1stein, Вы писали:
1>XPath
1>как-то так
Ни чего не понимаю (с) Колобки. Но вектор идеи понятен.
... << My edition based on RSDN@Home 1.2.0 alpha 4 rev. 1476 >>