public virtual void Write(IEnumerable<Blog> blogs, TextWriter writer, UrlHelper urlHelper) { var settings = new XmlWriterSettings { Encoding = Encoding.UTF8, OmitXmlDeclaration = true, ConformanceLevel = ConformanceLevel.Document, Indent = true, IndentChars = ("\t") }; using(XmlWriter xmlWriter = XmlWriter.Create(writer, settings)) { if(xmlWriter != null) { xmlWriter.WriteStartDocument(); //OPML ROOT xmlWriter.WriteStartElement("opml"); xmlWriter.WriteAttributeString("version", "1.0"); xmlWriter.WriteStartElement("head"); xmlWriter.WriteStartElement("title"); xmlWriter.WriteString(ConfigurationManager.AppSettings["AggregateTitle"]); xmlWriter.WriteEndElement(); xmlWriter.WriteEndElement(); //Body xmlWriter.WriteStartElement("body"); xmlWriter.WriteStartElement("outline"); xmlWriter.WriteAttributeString("text", ConfigurationManager.AppSettings["AggregateTitle"] + " Feeds"); foreach(Blog blog in blogs) { xmlWriter.WriteStartElement("outline"); string title = blog.Title; string xmlUrl = urlHelper.RssUrl(blog).ToString(); xmlWriter.WriteAttributeString("type", "rss"); xmlWriter.WriteAttributeString("text", title); xmlWriter.WriteAttributeString("xmlUrl", xmlUrl); xmlWriter.WriteEndElement(); } xmlWriter.WriteEndElement(); //outline xmlWriter.WriteEndElement(); //body xmlWriter.WriteEndElement(); //opml xmlWriter.Flush(); } } }