Работа с HTML кодом
От: stele Россия www.stele.su
Дата: 26.11.10 13:04
Оценка:
Собираю перед показом в WebBrowser HTML код из кусков. Куски эти зачастую оказываются несколько невалидны и содержат кое-что лишнее. Хотелось бы предварительно очищать их от скриптов, заменять объекты типа джавы или флеша заглушками, а также закрывать все открытые в куске теги. Вобщем извечный вопрос "что делать?", изобретать нечто своё или есть что-то подходящее готовое?
... << My edition based on RSDN@Home 1.2.0 alpha 4 rev. 1476 >>
В задаче спрашивается:
Сколько вытечет портвейна из открытого бассейна?
Re: Работа с HTML кодом
От: 1stein Украина  
Дата: 26.11.10 13:26
Оценка: 5 (1)
Здравствуйте, stele, Вы писали:

Html Agility Pack
Will code C# for food
Re[2]: Работа с HTML кодом
От: stele Россия www.stele.su
Дата: 26.11.10 13:58
Оценка:
Здравствуйте, 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 >>
В задаче спрашивается:
Сколько вытечет портвейна из открытого бассейна?
Re[3]: Работа с HTML кодом
От: 1stein Украина  
Дата: 26.11.10 14:47
Оценка: 12 (2)
Здравствуйте, 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));
Will code C# for food
Re[4]: Работа с HTML кодом
От: stele Россия www.stele.su
Дата: 26.11.10 15:06
Оценка:
Здравствуйте, 1stein, Вы писали:

1>XPath

1>как-то так

Ни чего не понимаю (с) Колобки. Но вектор идеи понятен.
... << My edition based on RSDN@Home 1.2.0 alpha 4 rev. 1476 >>
В задаче спрашивается:
Сколько вытечет портвейна из открытого бассейна?
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.