Ejemplo n.º 1
0
        public virtual void Write(IEnumerable<Blog> blogs, TextWriter writer, BlogUrlHelper 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();
                }
            }
        }