HtmlAgilityPack: как создать отступы HTML?

c# html-agility-pack html-generation

Вопрос

Итак, я генерирую html с помощью HtmlAgilityPack, и он отлично работает, но текст html не отстутнут. Однако я могу получить отложенный XML, но мне нужен HTML. Есть ли способ?

HtmlDocument doc = new HtmlDocument();

// gen html
HtmlNode table = doc.CreateElement("table");
table.Attributes.Add("class", "tableClass");
HtmlNode tr = doc.CreateElement("tr");
table.ChildNodes.Append(tr);
HtmlNode td = doc.CreateElement("td");
td.InnerHtml = "—";
tr.ChildNodes.Append(td);

// write text, no indent :(
using(StreamWriter sw = new StreamWriter("table.html"))
{
        table.WriteTo(sw);
}

// write xml, nicely indented but it's XML!
XmlWriterSettings settings = new XmlWriterSettings();
settings.OmitXmlDeclaration = true;
settings.Indent = true;
settings.ConformanceLevel = ConformanceLevel.Fragment;
using (XmlWriter xw = XmlTextWriter.Create("table.xml", settings))
{
        table.WriteTo(xw);
}

Принятый ответ

Насколько я знаю, HtmlAgilityPack не может этого сделать. Но вы могли бы просмотреть html аккуратные пакеты, которые предлагаются в похожих вопросах:


Популярные ответы

Нет, и это выбор «по дизайну». Существует большая разница между XML (или XHTML, который является XML, а не HTML), где - в большинстве случаев - пробелы не имеют особого значения и HTML.

Это не столь незначительное улучшение, так как изменение пробелов может изменить способ отображения некоторыми браузерами данного HTML-фрагмента, особенно искаженного HTML (который, как правило, хорошо обрабатывается библиотекой). И Html Agility Pack был разработан так, чтобы поддерживать способ отображения HTML, а не минимизировать способ написания разметки.

Я не говорю, что это невозможно или просто невозможно. Очевидно, что вы можете конвертировать в XML и voilà (и вы могли бы написать метод расширения, чтобы сделать это проще), но визуализированный вывод может быть другим, в общем случае.



Related

Лицензировано согласно: CC-BY-SA with attribution
Не связан с Stack Overflow
Лицензировано согласно: CC-BY-SA with attribution
Не связан с Stack Overflow