2009-01-09 125 views
1

我有一個字符串中未格式化的html。如何以編程方式格式化字符串的一個字符串

我想很好地格式化並將格式化的HTML輸出回字符串。 我一直在試圖使用System.Web.UI.HtmlTextWriter無濟於事:

System.IO.StringWriter wString = new System.IO.StringWriter(); 
System.Web.UI.HtmlTextWriter wHtml = new System.Web.UI.HtmlTextWriter(wString); 

wHtml.Write(sMyUnformattedHtml); 

string sMyFormattedHtml = wString.ToString(); 

我得到的是未格式化的HTML,是有可能實現什麼,我想在這裏做什麼?

+0

什麼是格式化的HTML字符串?例子會有所幫助。 – shahkalpesh 2009-01-09 04:39:09

回答

2

這裏所做的正是這一個功能:

// Attractively format the XML with consistant indentation. 

    public static String PrettyPrint(String XML) 
    { 
     String Result = ""; 

     using (MemoryStream MS = new MemoryStream()) 
     { 
      using (XmlTextWriter W = new XmlTextWriter(MS, Encoding.Unicode)) 
      { 
       XmlDocument D = new XmlDocument(); 

       try 
       { 
        // Load the XmlDocument with the XML. 
        D.LoadXml(XML); 

        W.Formatting = Formatting.Indented; 

        // Write the XML into a formatting XmlTextWriter 
        D.WriteContentTo(W); 
        W.Flush(); 
        MS.Flush(); 

        // Have to rewind the MemoryStream in order to read 
        // its contents. 
        MS.Position = 0; 

        // Read MemoryStream contents into a StreamReader. 
        StreamReader SR = new StreamReader(MS); 

        // Extract the text from the StreamReader. 
        String FormattedXML = SR.ReadToEnd(); 

        Result = FormattedXML; 
       } 
       catch (XmlException ex) 
       { 
        Result= ex.ToString(); 
       } 

       W.Close(); 
      } 
      MS.Close(); 
     } 
     Debug.WriteLine(Result); 
     return Result; 
    } 
-1

框架中沒有什麼能夠做到你想要的。

如果HTML片段是有效的XML,您可以將其加載到XmlDocument中,並編寫一些代碼來遍歷它並輸出格式化的文件。

2

如果您願意使用XHTML而不是HTML,您可以將它傳遞給外部的tidy或使用XmlTextWriter

0

使用EFTidyNet,爲Tidy託管的.NET包裝。這比使用批處理文件調用Tidy要簡單得多,速度也要快很多。

Tidy可以清理您的HTML並使其看起來不錯,並將其轉換爲有效的HTML或XHTML。