2012-02-10 7 views
2

入力を検証したり整頓したりせずに、生成されたhtmlコードをタブイングまたはインデントするC#のツール/ライブラリ/関数はありますか?C#Tabify /インデントHTML

編集:

インデントはTinyMCEを含むがこれらに限定されない、JavaScriptをTextEditorsからのHTMLコードを生成しました。 HtmlTextWriterはありません。有効なXML/XHTML/HTMLコードを期待してはいけません。

要件:

  • は前とタグを開いて閉じた後に新しい行を追加します。
  • タグ内の内容をインデントします(タブまたは4つのスペース)。
  • 長い行(N個の単語を持つ)を複数のインデントされた行に分割します。
  • 有効なHTMLではないにもかかわらず入力を変更しないでください。タブ付/インデントと長い行の分割のみ。この時点件まで

、私が持っている:

private string FormatHtml(string input) 
{ 
    //Opening tags 
    Regex r = new Regex("<([a-z]+) *[^/]*?>"); 
    string retVal = string.Empty; 
    retVal = r.Replace(input, string.Format("$&{0}\t", Environment.NewLine)); 

    //Closing tags 
    r = new Regex("</[^>]*>"); 
    retVal = r.Replace(retVal, string.Format("{0}$&{0}", Environment.NewLine)); 

    //Self closing tags 
    r = new Regex("<[^>/]*/>"); 
    retVal = r.Replace(retVal, string.Format("$&{0}", Environment.NewLine)); 

    return retVal; 
} 
+2

[HtmlTextWriter](http://msdn.microsoft.com/en-us/library/system.web.ui.htmltextwriter.aspx) – jrummell

+0

入力のサンプルと期待される出力のサンプルを提供できますか? –

+0

質問が更新されました。 –

答えて

2

これは、それが、私は私の頭の上から考えることができ、その唯一の事をやって長いったらしい道の少しかもしれません。

はすなわちHtmlAgilityまたはSgmlReader

あなたは、その後てXmlTextWriterに書き出すと、あなたはインデントをする設定で指定することができますXMLにHTMLを変換するために、SGMLコンバータを使用してください。

+0

入力を変更するのではなく、内部で内容をインデントする方法htmlタグ? –

+0

その場合は、HTML Tidy、http://tidy.sourceforge.net/を見てください。http://markbeaton.com/SoftwareInfo.aspx?ID=81a0ecd0-c41c-48da- 8a39-f10c8aa3f931 – Fen

+0

参照先のライブラリ「libtidy。dll "がクラッシュするWindows Server 2008 R2 SP1 64ビット。非常に不安定。:( –

3

あなたのアプローチを再考したいかもしれません。改行を挿入すると、インデントが深刻になり、ホワイトスペースに深刻な問題が発生する可能性があります。 testing

<span style="color:red"> 
    test 
</span> 
<span> 
    ing 
</span> 

test ing対あなたが唯一の挿入する必要があります

<span style="color:red">test</span><span>ing</span> 

HTMLは、上記のあなたがレンダリングされたHTMLに余分な空白があるだろう、それを変換したいHTMLと同じように表示されません。既に空白がある場合は改行。

+0

ありがとうございます。 –

関連する問題