private static bool TryFormatRss10Channel(Rss10Channel channelToFormat, XNamespaceAliasSet namespaceAliases, ExtensionManifestDirectory extensionManifestDirectory, out XElement channelElement) { channelElement = default; if (channelToFormat == null) { return(false); } channelElement = new XElement(_rss + "channel"); channelElement.Add(new XAttribute(_rdf + "about", channelToFormat.About ?? "")); channelElement.Add(new XElement(_rss + "title", channelToFormat.Title ?? "")); channelElement.Add(new XElement(_rss + "link", channelToFormat.Link ?? "")); channelElement.Add(new XElement(_rss + "description", channelToFormat.Description ?? "")); if (TryFormatRss10Image(channelToFormat.Image, referenceOnly: true, namespaceAliases: namespaceAliases, extensionManifestDirectory, out var imageElement)) { channelElement.Add(imageElement); } if (TryFormatRss10TextInput(channelToFormat.TextInput, referenceOnly: true, namespaceAliases: namespaceAliases, extensionManifestDirectory, out var textInputElement)) { channelElement.Add(textInputElement); } // extensions if (ExtensibleEntityFormatter.TryFormatXElementExtensions(channelToFormat, namespaceAliases, extensionManifestDirectory, out var extensionElements)) { channelElement.AddRange(extensionElements); } // items var liElements = new List <XElement>(); foreach (var itemToFormat in channelToFormat.Items) { if (TryFormatRss10Item(itemToFormat, referenceOnly: true, namespaceAliases: namespaceAliases, extensionManifestDirectory, itemElement: out var liElement)) { liElements.Add(liElement); } } if (liElements.Any()) { var itemsElement = new XElement(_rss + "items"); var seqElement = new XElement(_rdf + "Seq"); seqElement.AddRange(liElements); itemsElement.Add(seqElement); channelElement.Add(itemsElement); } return(true); }
private static bool TryParseRss10Channel(XElement channelElement, XNamespace rss, ExtensionManifestDirectory extensionManifestDirectory, out Rss10Channel parsedChannel) { parsedChannel = default; if (channelElement == null) { return(false); } parsedChannel = new Rss10Channel(); parsedChannel.About = channelElement.Attribute(_rdf + "about")?.Value; parsedChannel.Title = channelElement.Element(rss + "title")?.Value.Trim(); parsedChannel.Link = channelElement.Element(rss + "link")?.Value.Trim(); parsedChannel.Description = channelElement.Element(rss + "description")?.Value.Trim(); // extensions ExtensibleEntityParser.ParseXElementExtensions(channelElement, extensionManifestDirectory, parsedChannel); return(true); }