private SyndicationTextInput TryReadTextInputFromExtension(SyndicationElementExtensionCollection elementExtensions) { SyndicationElementExtension textInputElement = elementExtensions .Where(e => e.OuterName == Rss20Constants.TextInputTag && e.OuterNamespace == Rss20Constants.Rss20Namespace) .FirstOrDefault(); if (textInputElement == null) { return(null); } var textInput = new SyndicationTextInput(); using (XmlReader reader = textInputElement.GetReader()) { reader.ReadStartElement(); while (reader.IsStartElement()) { string name = reader.LocalName; string value = reader.ReadElementString(); switch (name) { case Rss20Constants.DescriptionTag: textInput.Description = value; break; case Rss20Constants.TitleTag: textInput.Title = value; break; case Rss20Constants.LinkTag: textInput.Link = new SyndicationLink(new Uri(value, UriKind.RelativeOrAbsolute)); break; case Rss20Constants.NameTag: textInput.Name = value; break; default: break; } } reader.ReadEndElement(); } return(IsValidTextInput(textInput) ? textInput : null); }
private SyndicationLink TryReadDocumentationFromExtension(SyndicationElementExtensionCollection elementExtensions) { SyndicationElementExtension documentationElement = elementExtensions .Where(e => e.OuterName == Rss20Constants.DocumentationTag && e.OuterNamespace == Rss20Constants.Rss20Namespace) .FirstOrDefault(); if (documentationElement == null) { return(null); } using (XmlReader reader = documentationElement.GetReader()) { SyndicationLink documentation = Rss20FeedFormatter.ReadAlternateLink(reader, BaseUri, SyndicationFeedFormatter.DefaultUriParser, preserveAttributeExtensions: true); return(documentation); } }
private void TryReadSkipHoursFromExtension(SyndicationElementExtensionCollection elementExtensions, Collection <int> skipHours) { SyndicationElementExtension skipHoursElement = elementExtensions .Where(e => e.OuterName == Rss20Constants.SkipHoursTag && e.OuterNamespace == Rss20Constants.Rss20Namespace) .FirstOrDefault(); if (skipHoursElement == null) { return; } using (XmlReader reader = skipHoursElement.GetReader()) { reader.ReadStartElement(); while (reader.IsStartElement()) { if (reader.LocalName == Rss20Constants.HourTag) { string value = reader.ReadElementString(); int hour; bool parsed = int.TryParse(value, NumberStyles.Integer, NumberFormatInfo.InvariantInfo, out hour); if (!parsed || (hour < 0 || hour > 23)) { throw new FormatException(string.Format(SR.InvalidSkipHourValue, value)); } skipHours.Add(hour); } else { reader.Skip(); } } } }
private void TryReadSkipDaysFromExtension(SyndicationElementExtensionCollection elementExtensions, Collection <string> skipDays) { SyndicationElementExtension skipDaysElement = elementExtensions .Where(e => e.OuterName == Rss20Constants.SkipDaysTag && e.OuterNamespace == Rss20Constants.Rss20Namespace) .FirstOrDefault(); if (skipDaysElement == null) { return; } using (XmlReader reader = skipDaysElement.GetReader()) { reader.ReadStartElement(); while (reader.IsStartElement()) { if (reader.LocalName == Rss20Constants.DayTag) { string day = reader.ReadElementString(); //Check if the day is actually an accepted day. if (IsValidDay(day)) { skipDays.Add(day); } } else { reader.Skip(); } } reader.ReadEndElement(); } }