HtmlAgilityPack:如何創建縮進的HTML?

c# html-agility-pack html-generation

所以,我使用HtmlAgilityPack生成html並且它工作得很好,但是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Ã(你可以編寫一個擴展方法來使這更容易)但是在一般情況下渲染的輸出可能會有所不同。



許可下: CC-BY-SA with attribution
不隸屬於 Stack Overflow
這個KB合法嗎? 是的,了解原因
許可下: CC-BY-SA with attribution
不隸屬於 Stack Overflow
這個KB合法嗎? 是的,了解原因