Close() публичный Метод

See XmlReader.Close
public Close ( ) : void
Результат void
Пример #1
0
 /// <summary>
 /// Creates acquired infoset.
 /// </summary>
 /// <param name="reader">Source reader</param>
 private string CreateAcquiredInfoset(XmlReader reader)
 {
     //TODO: Try to stream out this stuff
     XIncludingReader xir = new XIncludingReader(reader);
     xir.XmlResolver = this._xmlResolver;
     StringWriter sw = new StringWriter();
     XmlTextWriter w = new XmlTextWriter(sw);
     try
     {
         while (xir.Read())
             w.WriteNode(xir, false);
     }
     finally
     {
         if (xir != null)
             xir.Close();
         if (w != null)
             w.Close();
     }
     return sw.ToString();
 }
Пример #2
0
        /// <summary>
        /// Utility method for running tests.
        /// </summary>        
        public static void RunAndCompare(string source, string result, bool textAsCDATA, XmlResolver resolver) 
        {                                 
            XmlDocument doc = new XmlDocument();
            doc.PreserveWhitespace = true;                  
            XIncludingReader xir = new XIncludingReader(source);
            if (resolver != null)
                xir.XmlResolver = resolver;
            xir.ExposeTextInclusionsAsCDATA = textAsCDATA;            
//            while (xir.Read()) 
//            {
//                Console.WriteLine("{0} | {1} | {2} | {3}", xir.NodeType, xir.Name, xir.Value, xir.IsEmptyElement);                
//            }
//            throw new Exception();
            try 
            {
                doc.Load(xir);
            } 
            catch (Exception e)
            {
                xir.Close();
                throw e;
            }
            xir.Close();
            XmlReaderSettings s = new XmlReaderSettings();
            s.ProhibitDtd = false;
            s.IgnoreWhitespace = true;           
            XmlReader r1 = XmlReader.Create(new StringReader(doc.OuterXml), s, doc.BaseURI);                        
            XmlReader r2 = XmlReader.Create(result, s);                        
            try 
            {
                while (r1.Read()) 
                {
                    Assert.IsTrue(r2.Read()); 
                    while (r1.NodeType == XmlNodeType.XmlDeclaration ||
                        r1.NodeType == XmlNodeType.Whitespace)
                        r1.Read();
                    while (r2.NodeType == XmlNodeType.XmlDeclaration ||
                        r2.NodeType == XmlNodeType.Whitespace)
                        r2.Read();
                    Assert.AreEqual(r1.XmlLang, r2.XmlLang);
                    switch (r1.NodeType) 
                    {
                        case XmlNodeType.Attribute:
                            Assert.AreEqual(r2.NodeType, XmlNodeType.Attribute);
                            Assert.AreEqual(r1.Name, r2.Name);
                            Assert.AreEqual(r1.LocalName, r2.LocalName);
                            Assert.AreEqual(r1.NamespaceURI, r2.NamespaceURI);
                            Assert.AreEqual(r1.Value, r2.Value);
                            break;                   
                        case XmlNodeType.CDATA:
                            Assert.IsTrue(r2.NodeType == XmlNodeType.CDATA || r2.NodeType == XmlNodeType.Text);
                            Assert.AreEqual(r1.Value, r2.Value);
                            break;
                        case XmlNodeType.Comment:
                            Assert.AreEqual(r2.NodeType, XmlNodeType.Comment);
                            Assert.AreEqual(r1.Value, r2.Value);
                            break;
                        case XmlNodeType.DocumentType:
                            Assert.AreEqual(r2.NodeType, XmlNodeType.DocumentType);
                            Assert.AreEqual(r1.Name, r2.Name);                        
                            //Ok, don't compare DTD content
                            //Assert.AreEqual(r1.Value, r2.Value);
                            break;
                        case XmlNodeType.Element:
                            Assert.AreEqual(r2.NodeType, XmlNodeType.Element);
                            Assert.AreEqual(r1.Name, r2.Name);
                            Assert.AreEqual(r1.LocalName, r2.LocalName);
                            Assert.AreEqual(r1.NamespaceURI, r2.NamespaceURI);
                            Assert.AreEqual(r1.Value, r2.Value);
                            break;
                        case XmlNodeType.Entity:
                            Assert.AreEqual(r2.NodeType, XmlNodeType.Entity);
                            Assert.AreEqual(r1.Name, r2.Name);
                            Assert.AreEqual(r1.Value, r2.Value);
                            break;
                        case XmlNodeType.EndElement:
                            Assert.AreEqual(r2.NodeType, XmlNodeType.EndElement);                        
                            break;
                        case XmlNodeType.EntityReference:
                            Assert.AreEqual(r2.NodeType, XmlNodeType.EntityReference);
                            Assert.AreEqual(r1.Name, r2.Name);
                            Assert.AreEqual(r1.Value, r2.Value);
                            break;
                        case XmlNodeType.Notation:
                            Assert.AreEqual(r2.NodeType, XmlNodeType.Notation);
                            Assert.AreEqual(r1.Name, r2.Name);
                            Assert.AreEqual(r1.Value, r2.Value);
                            break;
                        case XmlNodeType.ProcessingInstruction:
                            Assert.AreEqual(r2.NodeType, XmlNodeType.ProcessingInstruction);
                            Assert.AreEqual(r1.Name, r2.Name);
                            Assert.AreEqual(r1.Value, r2.Value);
                            break;
                        case XmlNodeType.SignificantWhitespace:
                            Assert.AreEqual(r2.NodeType, XmlNodeType.SignificantWhitespace);
                            Assert.AreEqual(r1.Value, r2.Value);
                            break;
                        case XmlNodeType.Text:
                            Assert.IsTrue(r2.NodeType == XmlNodeType.CDATA || r2.NodeType == XmlNodeType.Text);
                            Assert.AreEqual(r1.Value.Replace("\r\n", "\n").Replace("\r", "").Trim(), r2.Value.Replace("\r\n", "\n").Replace("\r", "").Trim());
                            break;                    
                        default:
                            break;
                    }                     
                }
                Assert.IsFalse(r2.Read());
                Assert.IsTrue(r1.ReadState == ReadState.EndOfFile || r1.ReadState == ReadState.Closed);
                Assert.IsTrue(r2.ReadState == ReadState.EndOfFile || r2.ReadState == ReadState.Closed);
            } 
            catch(Exception e) 
            {
                r1.Close();
                r1 = null;
                r2.Close();
                r2 = null;
                ReportResults(result, doc);
                throw e;
            }
            finally 
            {                
                if (r1 != null)
                    r1.Close();
                if (r2 != null)
                    r2.Close();
            }
            ReportResults(result, doc);
        }    
Пример #3
0
 /// <summary>
 /// Creates acquired infoset.
 /// </summary>        
 private string CreateAcquiredInfoset(Uri includeLocation)
 {
     if (_cache == null)
         _cache = new Dictionary<string, WeakReference>();
     WeakReference wr;
     if (_cache.TryGetValue(includeLocation.AbsoluteUri, out wr) && wr.IsAlive)
     {
         return (string)wr.Target;
     }
     else
     {
         //Not cached or GCollected
         WebResponse wRes;
         Stream stream = GetResource(includeLocation.AbsoluteUri,
             _reader.GetAttribute(_keywords.Accept),
             _reader.GetAttribute(_keywords.AcceptLanguage), out wRes);
         XIncludingReader xir = new XIncludingReader(wRes.ResponseUri.AbsoluteUri, stream, _nameTable);
         xir.WhitespaceHandling = _whiteSpaceHandling;
         StringWriter sw = new StringWriter();
         XmlTextWriter w = new XmlTextWriter(sw);
         try
         {
             while (xir.Read())
                 w.WriteNode(xir, false);
         }
         finally
         {
             if (xir != null)
                 xir.Close();
             if (w != null)
                 w.Close();
         }
         string content = sw.ToString();
         lock (_cache)
         {
             if (!_cache.ContainsKey(includeLocation.AbsoluteUri))
                 _cache.Add(includeLocation.AbsoluteUri, new WeakReference(content));
         }
         return content;
     }
 }
Пример #4
0
        public void InnerXmlTest() 
        {
			XIncludingReader xir = new XIncludingReader("../../XInclude/tests/document.xml");
            xir.MoveToContent();
            string innerXml = xir.ReadInnerXml();
            xir.Close();
			xir = new XIncludingReader("../../XInclude/tests/document.xml");
            xir.MoveToContent();
            XmlDocument doc = new XmlDocument();
            doc.PreserveWhitespace = true;
            doc.Load(xir);            
            string innerXml2 = doc.DocumentElement.InnerXml;
            Assert.AreEqual(innerXml, innerXml2);
        }        
Пример #5
0
        public void TestXPointerIndentationBug()
        {

            XmlUrlResolver resolver = new XmlUrlResolver();
            resolver.Credentials = CredentialCache.DefaultCredentials;
            XsltSettings xsltSettings = new XsltSettings();
            xsltSettings.EnableDocumentFunction = true;
            XmlReaderSettings settings = new XmlReaderSettings();
            settings.ProhibitDtd = false;
            XmlReader reader = XmlReader.Create("../../XInclude/tests/Transform.xsl", settings);
            XIncludingReader xInputReader = new XIncludingReader("../../XInclude/tests/FileA.xml");
            try
            {
                MvpXslTransform processor = new MvpXslTransform(false);
                processor.Load(reader, xsltSettings, resolver);                
                //xInputReader.XmlResolver = new XMLBase();
                XmlDocument xInputDoc = new XmlDocument();
                xInputDoc.Load(xInputReader);
                XmlInput xInput = new XmlInput(xInputDoc);
                StringWriter stringW = new StringWriter();
                XmlOutput xOutput = new XmlOutput(stringW);
                processor.Transform(xInput, null, xOutput);
                processor.TemporaryFiles.Delete();
                Assert.AreEqual("<?xml version=\"1.0\" encoding=\"utf-16\"?>NodeA Content", stringW.ToString());
            }
            finally
            {
                 reader.Close();
                 xInputReader.Close();
            }
        }
Пример #6
0
        public void TwoFallbacks() 
        {
			XIncludingReader xir = new XIncludingReader("../../XInclude/tests/twofallbacks.xml");
            while (xir.Read());
            xir.Close();
        }             
Пример #7
0
        public void UnknownParseAttribute() 
        {
			XIncludingReader xir = new XIncludingReader("../../XInclude/tests/unknownparseattr.xml");
            while (xir.Read());
            xir.Close();
        }     
Пример #8
0
        public void FallbackNotChildOfInclude() 
        {
			XIncludingReader xir = new XIncludingReader("../../XInclude/tests/fallbacknotchildinclude.xml");
            while (xir.Read());
            xir.Close();
        }     
Пример #9
0
        public void IncludeChildOfInclude() 
        {
			XIncludingReader xir = new XIncludingReader("../../XInclude/tests/includechildofinclude.xml");
            while (xir.Read());
            xir.Close();
        }
Пример #10
0
        public void NoHrefAndNoXPointerAttributes() 
        {
			XIncludingReader xir = new XIncludingReader("../../XInclude/tests/nohref.xml");
            while (xir.Read());
            xir.Close();
        }