public string GetHtml() { XmlDocument html = new XmlDocument(); html.AppendChild(html.CreateElement("html")); XmlElement element = (XmlElement)(html.DocumentElement.AppendChild(html.CreateElement("head"))); HeadWriter.Flush(); Encoding charset = CharSet; element.InnerXml = CharSet.GetString(_headStream.ToArray()); element = (XmlElement)(html.DocumentElement.AppendChild(html.CreateElement("head"))); BodyWriter.Flush(); element.InnerXml = CharSet.GetString(_bodyStream.ToArray()); using (MemoryStream ms = new MemoryStream()) { using (StreamWriter sw = new StreamWriter(ms, charset)) { sw.WriteLine("<!DOCTYPE html>"); XmlWriterSettings settings = BodyWriter.Settings.Clone(); settings.ConformanceLevel = ConformanceLevel.Document; using (XmlWriter writer = XmlWriter.Create(sw, settings)) { html.WriteTo(writer); writer.Flush(); return(charset.GetString(ms.ToArray())); } } } }
protected virtual void Dispose(bool disposing) { if (_isDisposed) { return; } _isDisposed = true; if (disposing) { try { HeadWriter.Close(); } finally { try { BodyWriter.Close(); } finally { try { _headStream.Dispose(); } finally{ _bodyStream.Dispose(); } } } } }
public ResponseDocument(string title = null, int statusCode = StatusCodes.Status200OK, Encoding encoding = null) { StatusCode = statusCode; XmlWriterSettings settings = new XmlWriterSettings { Encoding = encoding ?? new UTF8Encoding(false), Indent = true, OmitXmlDeclaration = true, ConformanceLevel = ConformanceLevel.Fragment }; HeadWriter = XmlWriter.Create(_headStream, settings); BodyWriter = XmlWriter.Create(_bodyStream, settings); HeadWriter.WriteStartElement("meta"); HeadWriter.WriteAttributeString("charset", settings.Encoding.WebName); HeadWriter.WriteEndElement(); HeadWriter.WriteStartElement("meta"); HeadWriter.WriteAttributeString("name", "viewport"); HeadWriter.WriteAttributeString("content", "width=800, initial-scale=1, shrink-to-fit=no"); HeadWriter.WriteEndElement(); Title = (String.IsNullOrWhiteSpace(title)) ? Default_Title : title; HeadWriter.WriteElementString("title", Title); }