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(またはXMLであるXHTML、HTMLではないXHTML)と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は合法ですか? はい、理由を学ぶ