I've got unformatted html in a string.
I am trying to format it nicely and output the formatted html back into a string. I've been trying to use The System.Web.UI.HtmlTextWriter to no avail:
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();
All I get is the unformatted html, is it possible to achieve what I'm trying to do here?
Here's a function that does exactly that:
// 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;
}
You can pass it to tidy externally or use XmlTextWriter if you are willing to use XHTML instead of HTML.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With