C # версия HTML Tidy? - PullRequest
       17

C # версия HTML Tidy?

9 голосов
/ 23 октября 2010

Я просто ищу действительно простой способ очистки HTML (возможно, с помощью встроенного кода JavaScript). Я пробовал два разные HTML Tidy .NET порты и оба выдают исключения ...

Извините, под "чистым" я подразумеваю "отступ". HTML вообще не искажен. Это XHTML строгое.


Я наконец-то что-то работает с SGML , но это действительно самый нелепый кусок кода, когда-либо создававший отступ для HTML.

private static string FormatHtml(string input)
{
    var sgml = new SgmlReader {DocType = "HTML", InputStream = new StringReader(input)};
    using (var sw = new StringWriter())
    using (var xw = new XmlTextWriter(sw) { Indentation = 2, Formatting = Formatting.Indented })
    {
        sgml.Read();
        while (!sgml.EOF)
            xw.WriteNode(sgml, true);
    }
    return sw.ToString();
}

Ответы [ 5 ]

9 голосов
/ 11 января 2011

Последняя оболочка C # для HTML Tidy была сделана Марком Битоном (Mark Beaton), которая выглядит более актуальной, чем ссылки, на которые вы ссылались (2003).Также стоит отметить, что Марк предоставляет исполняемые файлы для ссылок, а не извлекает их с официального сайта.Это должно помочь в организации и проверке ваших HTML .

3 голосов
/ 18 октября 2018

AngleSharp 100% c #

    var parser = new HtmlParser();

    var document = parser.Parse("<html><head></head><body><i></i></body></html>");

    var sw = new StringWriter();
    document.ToHtml(sw, new PrettyMarkupFormatter());

    var HTML_prettified = sw.ToString());
3 голосов
/ 23 октября 2010

UPDATE

Проверка HtmlTextWriter или XhtmlTextWriter , использование: Форматирование вывода HTML с помощью HtmlTextWriter , может быть, HTML-конструкция с помощью HtmlTextWriter будет лучше? 1013 *

Также проверьте: LINQ & Lambda, Часть 3. Html Agility Pack для преобразования LINQ в XML

http://www.manoli.net/csharpformat/, здесь исходный код на случай, если вы его пропустите.


Может быть, вы хотите сделать это самостоятельно? Этот проект может быть полезен: Html Agility Pack

Что такое Html Agility Pack (HAP)?

Это гибкий анализатор HTML, который создает DOM для чтения / записи и поддерживает простой XPATH или XSLT (вам на самом деле НЕ НУЖНО понимать XPATH или XSLT, чтобы его использовать, не беспокойтесь ...). Это библиотека кода .NET, которая позволяет анализировать HTML-файлы «из Интернета». Синтаксический анализатор очень терпим с искаженным HTML «реального мира». Объектная модель очень похожа на то, что предлагает System.Xml, но для документов HTML (или потоков).

Html Agility Pack теперь поддерживает Linq to Objects (через интерфейс LINQ to Xml Like). Проверьте новую бета-версию, чтобы играть с этой функцией

Примеры приложений:

  • Исправление страницы или генерация. Вы можете исправить страницу так, как вы хотите, изменить DOM, добавить узлы, скопировать узлы, хорошо ... ты называешь это.

  • Веб-сканеры. Вы можете легко добраться до IMG / SRC или a / hrefs с кучей запросов XPATH.

  • Веб-скребки. Вы можете легко отказаться любая существующая веб-страница в RSS кормить, например, только с XSLT файл, служащий связующим. Пример этого приводится.


Также вы можете попробовать эту реализацию: Управляемый упаковщик для библиотеки HTML Tidy

1 голос
/ 23 октября 2010

Я использовал SGML Reader для преобразования HTML в XHTML в прошлом.Может быть стоит посмотреть на ...

У меня никогда не было проблем с ним, когда я его использовал.

0 голосов
/ 17 апреля 2019

Вы можете использовать HtmlAgilityPack (добавить этот пакет из nuget).

Пример кода:

string html = "<div><p>line 1<br>line 2</p><span></div>";
var htmlDoc = new HtmlAgilityPack.HtmlDocument();
htmlDoc.LoadHtml(description);
var fixedHtml = htmlDoc.DocumentNode.OuterHtml;

Вывод:

<div><p>line 1<br />line 2</p><span></span></div>
...