LoadDocument() static private method

static private LoadDocument ( XmlTextReaderImpl reader ) : XPathDocument
reader XmlTextReaderImpl
return XPathDocument
Ejemplo n.º 1
0
        internal XPathNavigator GetNavigator(Uri ruri)
        {
            XPathNavigator?result = null;

            if (_documentCache != null)
            {
                result = _documentCache[ruri] as XPathNavigator;
                if (result != null)
                {
                    return(result.Clone());
                }
            }
            else
            {
                _documentCache = new Hashtable();
            }

            object?input = _resolver.GetEntity(ruri, null, null);

            if (input is Stream)
            {
                XmlTextReaderImpl tr = new XmlTextReaderImpl(ruri.ToString(), (Stream)input);
                {
                    tr.XmlResolver = _resolver;
                }
                // reader is closed by Compiler.LoadDocument()
                result = ((IXPathNavigable)Compiler.LoadDocument(tr)).CreateNavigator();
            }
            else if (input is XPathNavigator)
            {
                result = (XPathNavigator)input;
            }
            else
            {
                throw XsltException.Create(SR.Xslt_CantResolve, ruri.ToString());
            }

            _documentCache[ruri] = result !.Clone();
            return(result);
        }
Ejemplo n.º 2
0
        internal NavigatorInput ResolveDocument(Uri absoluteUri)
        {
            Debug.Assert(this.xmlResolver != null);
            object input    = this.xmlResolver.GetEntity(absoluteUri, null, null);
            string resolved = absoluteUri.ToString();

            if (input is Stream)
            {
                XmlTextReaderImpl tr = new XmlTextReaderImpl(resolved, (Stream)input); {
                    tr.XmlResolver = this.xmlResolver;
                }
                // reader is closed by Compiler.LoadDocument()
                return(new NavigatorInput(Compiler.LoadDocument(tr).CreateNavigator(), resolved, rootScope));
            }
            else if (input is XPathNavigator)
            {
                return(new NavigatorInput((XPathNavigator)input, resolved, rootScope));
            }
            else
            {
                throw XsltException.Create(Res.Xslt_CantResolve, resolved);
            }
        }