コード例 #1
0
        public static bool TryFormatMediaRssExtension(MediaRssExtension extensionToFormat, XNamespaceAliasSet namespaceAliases, ExtensionManifestDirectory extensionManifestDirectory, out IList <XElement> elements)
        {
            elements = default;

            if (extensionToFormat == null)
            {
                return(false);
            }

            elements = new List <XElement>();

            // groups
            foreach (var groupToFormat in extensionToFormat.Groups ?? Enumerable.Empty <MediaRssGroup>())
            {
                if (TryFormatMediaRssGroup(groupToFormat, namespaceAliases, extensionManifestDirectory, out var groupElement))
                {
                    elements.Add(groupElement);
                }
            }

            // contents
            foreach (var contentToFormat in extensionToFormat.Contents ?? Enumerable.Empty <MediaRssContent>())
            {
                if (TryFormatMediaRssContent(contentToFormat, namespaceAliases, extensionManifestDirectory, out var contentElement))
                {
                    elements.Add(contentElement);
                }
            }

            // container
            if (TryFormatMediaRssContainer(extensionToFormat, namespaceAliases, extensionManifestDirectory, out var containerChildElements))
            {
                foreach (var containerChildElement in containerChildElements)
                {
                    elements.Add(containerChildElement);
                }
            }

            if (!elements.Any())
            {
                return(false);
            }

            namespaceAliases.EnsureNamespaceAlias(MediaRssExtensionConstants.NamespaceAlias, _media);
            return(true);
        }
コード例 #2
0
        public static bool TryParseMediaRssExtension(XElement parentElement, ExtensionManifestDirectory extensionManifestDirectory, out MediaRssExtension extension)
        {
            extension = null;

            if (parentElement == null)
            {
                return(false);
            }

            foreach (var ns in MediaRssExtensionConstants.RecognizedNamespaces)
            {
                if (parentElement.Name.Namespace == ns)
                {
                    continue; // skip because we'd be processing Media RSS extension in Media RSS element
                }
                // groups
                foreach (var groupElement in parentElement.Elements(ns + "group"))
                {
                    if (TryParseMediaRssGroup(groupElement, ns, extensionManifestDirectory, out var parsedGroup))
                    {
                        extension = extension ?? new MediaRssExtension();
                        extension.Groups.Add(parsedGroup);
                    }
                }

                // contents
                foreach (var contentElement in parentElement.Elements(ns + "content"))
                {
                    if (TryParseMediaRssContent(contentElement, ns, extensionManifestDirectory, out var parsedContent))
                    {
                        extension = extension ?? new MediaRssExtension();
                        extension.Contents.Add(parsedContent);
                    }
                }

                // container
                ParseMediaRssContainer(parentElement, ns, extensionManifestDirectory, ref extension);
            }

            return(extension != null);
        }