Write HTML to string
c#, html
Solution
You're probably better off using an `HtmlTextWriter` or an `XMLWriter` than a plain `StringWriter`. They will take care of escaping for you, as well as making sure the document is well-formed.
This page shows the basics of using the `HtmlTextWriter` class, the gist of which being:
StringWriter stringWriter = new StringWriter();
using (HtmlTextWriter writer = new HtmlTextWriter(stringWriter))
{
writer.AddAttribute(HtmlTextWriterAttribute.Class, classValue);
writer.RenderBeginTag(HtmlTextWriterTag.Div); // Begin #1
writer.AddAttribute(HtmlTextWriterAttribute.Href, urlValue);
writer.RenderBeginTag(HtmlTextWriterTag.A); // Begin #2
writer.AddAttribute(HtmlTextWriterAttribute.Src, imageValue);
writer.AddAttribute(HtmlTextWriterAttribute.Width, "60");
writer.AddAttribute(HtmlTextWriterAttribute.Height, "60");
writer.AddAttribute(HtmlTextWriterAttribute.Alt, "");
writer.RenderBeginTag(HtmlTextWriterTag.Img); // Begin #3
writer.RenderEndTag(); // End #3
writer.Write(word);
writer.RenderEndTag(); // End #2
writer.RenderEndTag(); // End #1
}
// Return the result.
return stringWriter.ToString();
Problem
I have code like this. Is there a way to make it easier to write and maintain? Using C# .NET 3.5. ``` string header(string title) { StringWriter s = new StringWriter(); s.WriteLine("{0}","<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01//EN\" \"http://www.w3.org/TR/html4/strict.dtd\">"); s.WriteLine("{0}", "<html>"); s.WriteLine("<title>{0}</title>", title); s.WriteLine("{0}","<link rel=\"stylesheet\" type=\"text/css\" href=\"style.css\">"); s.WriteLine("{0}", "</head>"); s.WriteLine("{0}", "<body>"); s.WriteLine("{0}", ""); } ``` I could also just write: ``` s.WriteLine("{0}", @"blah blah many new lines blah UHY#$&_#$_*@Y KSDSD<>\t\t\t\t\t\tt\t\t\\\t\t\t\t\\\h\th'\h't\th hi done"); ``` It will work, but I need to replace all `"` with `""`.