ReasonCodeExample.XPathInformation.SimpleXmlNamespaceResolver.SimpleXmlNamespaceResolver C# (CSharp) Method

SimpleXmlNamespaceResolver() public method

public SimpleXmlNamespaceResolver ( System.Xml.Linq.XDocument document ) : System.Collections.Generic
document System.Xml.Linq.XDocument
return System.Collections.Generic
        public SimpleXmlNamespaceResolver(XDocument document)
        {
            if (document?.Root == null)
            {
                return;
            }

            foreach (var element in document.Root.DescendantsAndSelf())
            {
                var elementNamespace = element.Name.Namespace.ToString();
                if(!string.IsNullOrWhiteSpace(element.Name.NamespaceName) && !_namespaces.ContainsKey(elementNamespace))
                {
                    var elementNamespacePrefix = GetNamespacePrefix(element);
                    _namespaces.Add(elementNamespace, elementNamespacePrefix);
                }

                foreach(var attribute in element.Attributes())
                {
                    string attributeNamespace;
                    string attributeNamespacePrefix;
                    if(attribute.IsNamespaceDeclaration)
                    {
                        attributeNamespace = attribute.Value;
                        attributeNamespacePrefix = GetNamespacePrefixFromXmlnsDeclaration(attribute);
                    }
                    else
                    {
                        attributeNamespace = attribute.Name.Namespace.ToString();
                        attributeNamespacePrefix = GetNamespacePrefix(attribute);
                    }
                    if(!string.IsNullOrEmpty(attributeNamespace) && !_namespaces.ContainsKey(attributeNamespace))
                    {
                        _namespaces.Add(attributeNamespace, attributeNamespacePrefix);
                    }
                }
            }
        }