예제 #1
0
        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);
        }
예제 #2
0
        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);
        }