Exemplo n.º 1
0
        /// <summary>
        /// Converts an xml list of items into an RSS feed
        /// </summary>
        /// <param name="title"></param>
        /// <param name="link"></param>
        /// <param name="description"></param>
        /// <param name="copyright"></param>
        /// <param name="postTableName"></param>
        /// <param name="postItemTitleFieldName"></param>
        /// <param name="postItemDescriptionFieldName"></param>
        /// <param name="postItemUrlFieldName"></param>
        /// <param name="postItemDatePostedFieldName"></param>
        /// <param name="xmlData"></param>
        /// <param name="maxItemsToReturn"></param>
        /// <param name="eventLog"></param>
        /// <returns></returns>
        public static String XmlToRss(String title, String link, String description, String copyright, String postTableName, String postItemTitleFieldName, String postItemDescriptionFieldName, String postItemUrlFieldName, String postItemDatePostedFieldName, String xmlData, Int32 maxItemsToReturn, IEventLog eventLog)
        {
            var builder  = new StringBuilder();
            var settings = new XmlWriterSettings {
                Encoding = Encoding.UTF8, Indent = true
            };
            var feedWriter = XmlWriter.Create(builder, settings);

            feedWriter.WriteStartDocument();

            // These are RSS Tags
            feedWriter.WriteStartElement("rss");
            feedWriter.WriteAttributeString("version", "2.0");

            feedWriter.WriteStartElement("channel");
            feedWriter.WriteElementString("title", title);
            feedWriter.WriteElementString("link", link);
            feedWriter.WriteElementString("description", description);
            feedWriter.WriteElementString("copyright", copyright);

            var posts = DataSetHelper.ConvertXmlStringToDataSet(xmlData, false);

            // Write all Posts in the rss feed
            int[] itemCount = { 0 };
            foreach (var post in posts.Tables[postTableName].Rows.Cast <DataRow>().Where(post => itemCount[0] <= maxItemsToReturn || maxItemsToReturn == 0))
            {
                feedWriter.WriteStartElement("item");
                feedWriter.WriteElementString("title", post[postItemTitleFieldName].ToString());
                feedWriter.WriteElementString("description", post[postItemDescriptionFieldName].ToString());
                feedWriter.WriteElementString("link", post[postItemUrlFieldName].ToString());
                feedWriter.WriteElementString("pubDate", post[postItemDatePostedFieldName].ToString());
                feedWriter.WriteEndElement();
                itemCount[0]++;
            }

            // Close all open tags tags
            feedWriter.WriteEndElement();
            feedWriter.WriteEndElement();
            feedWriter.WriteEndDocument();
            feedWriter.Flush();
            feedWriter.Close();

            return(builder.ToString());
        }