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); }
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); }