public void Init(string selfLink, string languageCulture = null) { ElementExtensions.Add( new XElement(((XNamespace)UrlAtom) + "link", new XAttribute("href", selfLink), new XAttribute("rel", "self"), new XAttribute("type", "application/rss+xml"))); if (languageCulture.HasValue()) { Language = languageCulture; } }
public void Init(string selfLink, Language language = null) { ElementExtensions.Add( new XElement(((XNamespace)UrlAtom) + "link", new XAttribute("href", selfLink), new XAttribute("rel", "self"), new XAttribute("type", "application/rss+xml"))); if (language != null) { Language = language.LanguageCulture.EmptyNull().ToLower(); } }
protected internal virtual bool TryParseElement(XmlReader reader, string version) { if (reader == null) { throw new ArgumentNullException("reader"); } reader.MoveToContent(); if (reader.LocalName != "service" || reader.NamespaceURI != version) { return(false); } for (int i = 0; i < reader.AttributeCount; i++) { reader.MoveToAttribute(i); if (!TryParseAttribute(reader.LocalName, reader.NamespaceURI, reader.Value, version)) { AttributeExtensions.Add(new XmlQualifiedName(reader.LocalName, reader.NamespaceURI), reader.Value); } } reader.MoveToElement(); if (reader.IsEmptyElement) { throw new XmlException("AtomPP service element requires at least one workspace element"); } reader.ReadStartElement(); for (reader.MoveToContent(); reader.NodeType != XmlNodeType.EndElement; reader.MoveToContent()) { if (reader.LocalName == "workspace" && reader.NamespaceURI == version) { var ws = CreateWorkspace(); if (ws.TryParseElement(reader, version)) { Workspaces.Add(ws); continue; } } ElementExtensions.Add(new SyndicationElementExtension(reader)); } reader.ReadEndElement(); return(true); }
public void ReadXml(System.Xml.XmlReader reader) { bool isEmpty = reader.IsEmptyElement; if (reader.HasAttributes) { for (int i = 0; i < reader.AttributeCount; i++) { reader.MoveToNextAttribute(); if (reader.NamespaceURI == "") { if (reader.LocalName == "ref") { this.Ref = reader.Value; } else if (reader.LocalName == "href") { this.Href = new Uri(reader.Value); } else if (reader.LocalName == "source") { this.Source = new Uri(reader.Value); } else if (reader.LocalName == "type") { this.MediaType = reader.Value; } else { this.AttributeExtensions.Add(new XmlQualifiedName(reader.LocalName, reader.NamespaceURI), reader.Value); } } } } reader.ReadStartElement(); if (!isEmpty) { while (reader.IsStartElement()) { ElementExtensions.Add((XElement)XElement.ReadFrom(reader)); } reader.ReadEndElement(); } }
protected internal virtual bool TryParseElement(XmlReader reader, string version) { if (reader == null) { throw new ArgumentNullException("reader"); } reader.MoveToContent(); if (reader.LocalName != "collection" || reader.NamespaceURI != version) { return(false); } for (int i = 0; i < reader.AttributeCount; i++) { reader.MoveToAttribute(i); if (!TryParseAttribute(reader.LocalName, reader.NamespaceURI, reader.Value, version)) { AttributeExtensions.Add(new XmlQualifiedName(reader.LocalName, reader.NamespaceURI), reader.Value); } } reader.MoveToElement(); if (!reader.IsEmptyElement) { reader.Read(); for (reader.MoveToContent(); reader.NodeType != XmlNodeType.EndElement; reader.MoveToContent()) { if (reader.LocalName == "title" && reader.NamespaceURI == Namespaces.Atom10) { Title = Atom10FeedFormatter.ReadTextSyndicationContent(reader); } else { ElementExtensions.Add(new SyndicationElementExtension(reader)); } } } reader.Read(); return(true); }
protected internal virtual bool TryParseElement(XmlReader reader, string version) { if (reader == null) { throw new ArgumentNullException("reader"); } reader.MoveToContent(); if (reader.LocalName != "workspace" || reader.NamespaceURI != version) { return(false); } bool isEmpty = reader.IsEmptyElement; reader.ReadStartElement(); if (isEmpty) { return(true); } for (reader.MoveToContent(); reader.NodeType != XmlNodeType.EndElement; reader.MoveToContent()) { if (reader.LocalName == "title" && reader.NamespaceURI == Namespaces.Atom10) { Title = Atom10FeedFormatter.ReadTextSyndicationContent(reader); continue; } else if (reader.LocalName == "collection" && reader.NamespaceURI == version) { var rc = new ResourceCollectionInfo(); if (rc.TryParseElement(reader, version)) { Collections.Add(rc); continue; } } ElementExtensions.Add(new SyndicationElementExtension(reader)); } return(true); }
/// <summary> /// This needs to be called after anything in the model is changed. /// </summary> public void SyncFromModel() { // this pulls down information from the Model element into the atom item. Id = Model.CanonicalName; Title = new TextSyndicationContent(Model.CosmeticName); Summary = new TextSyndicationContent(Model.PackageDetails.SummaryDescription); PublishDate = Model.PackageDetails.PublishDate; Authors.Clear(); Contributors.Clear(); Categories.Clear(); Links.Clear(); if (Model.PackageDetails.Publisher != null) { Authors.Add(CreatePerson().With(a => { a.Name = Model.PackageDetails.Publisher.Name; a.Email = Model.PackageDetails.Publisher.Email; a.Uri = Model.PackageDetails.Publisher.Location == null ? string.Empty : Model.PackageDetails.Publisher.Location.ToString(); })); } if (!Model.PackageDetails.Contributors.IsNullOrEmpty()) { foreach (var c in Model.PackageDetails.Contributors) { var contributor = c; Contributors.Add(CreatePerson().With(a => { a.Name = contributor.Name; a.Email = contributor.Email; a.Uri = contributor.Location == null ? string.Empty : contributor.Location.ToString(); })); } } if (!string.IsNullOrEmpty(Model.PackageDetails.CopyrightStatement)) { Copyright = new TextSyndicationContent(Model.PackageDetails.CopyrightStatement); } if (!Model.PackageDetails.Tags.IsNullOrEmpty()) { foreach (var tag in Model.PackageDetails.Tags) { Categories.Add(new SyndicationCategory(tag, "/Tags", tag)); } } if (!Model.PackageDetails.Categories.IsNullOrEmpty()) { foreach (var category in Model.PackageDetails.Categories) { Categories.Add(new SyndicationCategory(category, "/Categories", category)); } } if (Model.PackageDetails.Description != null) { Content = SyndicationContent.CreateHtmlContent(Model.PackageDetails.Description); } if (!Model.Locations.IsNullOrEmpty()) { foreach (var l in Model.Locations) { var location = l; Links.Add(CreateLink().With(link => { link.RelationshipType = "enclosure"; link.MediaType = "application/package"; link.Uri = location; link.Title = Model.Name; })); Links.Add(CreateLink().With(link => { link.Uri = location; })); } } // and serialize that out. ElementExtensions.Add(Model, Model.XmlSerializer); }