/// <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")); } } }
/// <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")); } } }
/// <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); }