コード例 #1
0
        /// <summary>
        /// Serializes the RSS2.
        /// </summary>
        /// <param name="doc">The doc.</param>
        /// <param name="feed">The feed.</param>
        public static void SerializeRss2(XmlDocument doc, IRssFeed feed)
        {
            XmlElement root = AppendNewElement(doc, doc, "rss");

            AppendNewAttribute(doc, root, "version", "2.0");
            XmlElement channel = AppendNewElement(doc, root, "channel");

            AppendNewElement(doc, channel, "title", feed.Title);
            if (feed.FeedUri != null)
            {
                AppendNewElement(doc, channel, "link", feed.FeedUri.ToString());
            }
            AppendNewElement(doc, channel, "description", feed.Description);
            AppendNewElement(doc, channel, "copyright", feed.Copyright);
            foreach (IRssFeedItem item in feed.Items)
            {
                XmlElement itemel = AppendNewElement(doc, channel, "item");
                AppendNewElement(doc, itemel, "title", item.Title);
                if (item.Link != null)
                {
                    AppendNewElement(doc, itemel, "link", item.Link.ToString());
                }
                AppendNewElement(doc, itemel, "description", item.Description);
                if (item.PublicationDate != null)
                {
                    AppendNewElement(doc, itemel, "pubDate", item.PublicationDate.DateTimeUtc.ToString("r"));
                }
            }
        }
コード例 #2
0
 /// <summary>
 /// Serializes the RSS2.
 /// </summary>
 /// <param name="doc">The doc.</param>
 /// <param name="feed">The feed.</param>
 public static void SerializeRss2(XmlDocument doc, IRssFeed feed)
 {
     XmlElement root = AppendNewElement(doc, doc, "rss");
     AppendNewAttribute(doc, root, "version", "2.0");
     XmlElement channel = AppendNewElement(doc, root, "channel");
     AppendNewElement(doc, channel, "title", feed.Title);
     if (feed.FeedUri != null)
     {
         AppendNewElement(doc, channel, "link", feed.FeedUri.ToString());
     }
     AppendNewElement(doc, channel, "description", feed.Description);
     AppendNewElement(doc, channel, "copyright", feed.Copyright);
     foreach (IRssFeedItem item in feed.Items)
     {
         XmlElement itemel = AppendNewElement(doc, channel, "item");
         AppendNewElement(doc, itemel, "title", item.Title);
         if (item.Link != null)
         {
             AppendNewElement(doc, itemel, "link", item.Link.ToString());
         }
         AppendNewElement(doc, itemel, "description", item.Description);
         if (item.PublicationDate != null)
         {
             AppendNewElement(doc, itemel, "pubDate", item.PublicationDate.DateTimeUtc.ToString("r"));
         }
     }
 }
コード例 #3
0
        /// <summary>
        /// Parses the specified reader.
        /// </summary>
        /// <param name="reader">The reader.</param>
        /// <returns></returns>
        public override T Parse <T>(System.Xml.XmlReader reader)
        {
            IRssFeed ret = (IRssFeed) new RssFeed();

            reader.Read();

            // RDF versions of RSS don't have version tags.
            //double version = double.Parse(reader.GetAttribute("version"));

            reader.ReadToDescendant("channel");

            bool readContent = false;

            while (readContent || reader.Read())
            {
                readContent = false;
                if (reader.NodeType == XmlNodeType.Element)
                {
                    readContent = true;
                    switch (reader.Name)
                    {
                    case "title":
                        ret.Title = reader.ReadElementContentAsString();
                        break;

                    case "link":
                        ret.FeedUri = CachedPropertiesProvider.ConvertToUri(reader.ReadElementContentAsString());
                        break;

                    case "description":
                        ret.Description = reader.ReadElementContentAsString();
                        break;

                    case "language":
                        ret.Culture = CachedPropertiesProvider.ConvertToCultureInfo(reader.ReadElementContentAsString());
                        break;

                    case "copyright":
                        ret.Copyright = reader.ReadElementContentAsString();
                        break;

                    case "managingEditor":
                        ret.ManagingEditor = reader.ReadElementContentAsString();
                        break;

                    case "webMaster":
                        ret.WebMaster = reader.ReadElementContentAsString();
                        break;

                    case "pubDate":
                        ret.PublicationDate = CachedPropertiesProvider.ConvertToTzDateTime(reader.ReadElementContentAsString());
                        break;

                    case "lastBuildDate":
                        ret.LastChanged = CachedPropertiesProvider.ConvertToTzDateTime(reader.ReadElementContentAsString());
                        break;

                    case "category":
                        using (XmlReader subReader = reader.ReadSubtree())
                        {
                            ret.Category = ConvertToIRssCategory(subReader);
                        }
                        if (reader.IsEmptyElement)
                        {
                            readContent = false;
                        }
                        break;

                    case "generator":
                        ret.Generator = reader.ReadElementContentAsString();
                        break;

                    case "docs":
                        ret.Doc = CachedPropertiesProvider.ConvertToUri(reader.ReadElementContentAsString());
                        break;

                    case "cloud":
                        using (XmlReader subReader = reader.ReadSubtree())
                        {
                            ret.Cloud = ConvertToIRssCloud(subReader);
                        }
                        if (reader.IsEmptyElement)
                        {
                            readContent = false;
                        }
                        break;

                    case "ttl":
                        ret.TimeToLive = CachedPropertiesProvider.ConvertToInt(reader.ReadElementContentAsString());
                        break;

                    case "image":
                        using (XmlReader subReader = reader.ReadSubtree())
                        {
                            ret.Image = ConvertToIRssImage(subReader);
                        }
                        if (reader.IsEmptyElement)
                        {
                            readContent = false;
                        }
                        break;

                    /*case "rating":
                     *  break;*/
                    case "textInput":
                        using (XmlReader subReader = reader.ReadSubtree())
                        {
                            ret.TextInput = ConvertToIRssTextInput(subReader);
                        }
                        if (reader.IsEmptyElement)
                        {
                            readContent = false;
                        }
                        break;

                    case "skipHours":
                        using (XmlReader subReader = reader.ReadSubtree())
                        {
                            ret.SkipHours = ConvertToSkipHourList(subReader);
                        }
                        if (reader.IsEmptyElement)
                        {
                            readContent = false;
                        }
                        break;

                    case "skipDays":
                        using (XmlReader subReader = reader.ReadSubtree())
                        {
                            ret.SkipDays = ConvertToDayOfWeekList(subReader);
                        }
                        if (reader.IsEmptyElement)
                        {
                            readContent = false;
                        }
                        break;

                    case "item":
                        using (XmlReader itemReader = reader.ReadSubtree())
                        {
                            ret.Items.Add(ParseItem(itemReader));
                        }
                        if (reader.IsEmptyElement)
                        {
                            readContent = false;
                        }
                        break;

                    default:
                        UnhandledElement(ret, reader);
                        break;
                    }
                }
            }
            reader.Close();
            return((T)ret);
        }