System.Xml.XPath.XPathNavigator.GetNamespaces C# (CSharp) Method

GetNamespaces() static private method

static private GetNamespaces ( IXmlNamespaceResolver resolver ) : XmlNamespaceManager
resolver IXmlNamespaceResolver
return System.Xml.XmlNamespaceManager
        internal static XmlNamespaceManager GetNamespaces(IXmlNamespaceResolver resolver)
        {
            XmlNamespaceManager mngr = new XmlNamespaceManager(new NameTable());
            IDictionary<string, string> dictionary = resolver.GetNamespacesInScope(XmlNamespaceScope.All);
            foreach (KeyValuePair<string, string> pair in dictionary)
            {
                //"xmlns " is always in the namespace manager so adding it would throw an exception
                if (pair.Key != "xmlns")
                    mngr.AddNamespace(pair.Key, pair.Value);
            }
            return mngr;
        }

Usage Example

        public static XPathExpression Compile(string xpath, IXmlNamespaceResolver nsResolver)
        {
            bool              hasPrefix;
            Query             query = new QueryBuilder().Build(xpath, out hasPrefix);
            CompiledXpathExpr expr  = new CompiledXpathExpr(query, xpath, hasPrefix);

            if (null != nsResolver)
            {
                XmlNamespaceManager mngr = XPathNavigator.GetNamespaces(nsResolver);
                expr.SetContext(mngr);
            }
            return(expr);
        }