2005-10-01 Atsushi Enomoto <atsushi@ximian.com>
authorAtsushi Eno <atsushieno@gmail.com>
Sat, 1 Oct 2005 11:19:18 +0000 (11:19 -0000)
committerAtsushi Eno <atsushieno@gmail.com>
Sat, 1 Oct 2005 11:19:18 +0000 (11:19 -0000)
* XmlReader.cs, XmlTextReader.cs, XmlTextReader2.cs :
 XmlReader.Create() with string url argument are not working because
 of incorrect choice of the .ctor().

* XmlReaderCommonTests.cs : added simple Create() test.

svn path=/trunk/mcs/; revision=51075

mcs/class/System.XML/System.Xml/ChangeLog
mcs/class/System.XML/System.Xml/XmlReader.cs
mcs/class/System.XML/System.Xml/XmlTextReader.cs
mcs/class/System.XML/System.Xml/XmlTextReader2.cs
mcs/class/System.XML/Test/System.Xml/ChangeLog
mcs/class/System.XML/Test/System.Xml/XmlReaderCommonTests.cs

index 2cbdc4567c6683172da1b500dc830f8d661a065f..06849a3819a0c3039de85d5390979798f99e4783 100644 (file)
@@ -1,3 +1,9 @@
+2005-10-01  Atsushi Enomoto <atsushi@ximian.com>
+
+       * XmlReader.cs, XmlTextReader.cs, XmlTextReader2.cs :
+        XmlReader.Create() with string url argument are not working because
+        of incorrect choice of the .ctor().
+
 2005-09-28  Atsushi Enomoto <atsushi@ximian.com>
 
        * XmlNodeReaderImpl.cs : when the source node was not a document and
index 318ffa8ed4c320931b16ce9d20ea1e9ba8247fa5..b7a8aa677287b1d9c7fdb6d6d1877d97eabadd71 100644 (file)
@@ -235,7 +235,7 @@ namespace System.Xml
                        return
                                level == ConformanceLevel.Fragment ?
                                XmlNodeType.Element :
-                               XmlNodeType.Element;
+                               XmlNodeType.Document;
                }
 
                public static XmlReader Create (Stream stream)
@@ -301,7 +301,9 @@ namespace System.Xml
                                settings = new XmlReaderSettings ();
                        if (context == null)
                                context = PopulateParserContext (settings, url);
-                       return CreateCustomizedTextReader (new XmlTextReader (url, GetNodeType (settings), context), settings);
+                       return CreateCustomizedTextReader (
+                               new XmlTextReader (true, url, GetNodeType (settings), context),
+                               settings);
                }
 
                [MonoTODO ("ConformanceLevel")]
index 59900bc0e702c8853b4bb0d0e9daff4ba7d25292..95e99fd47eaca3f74cbd2392f704b60da5c34867 100644 (file)
@@ -101,14 +101,13 @@ namespace System.Xml
 
                public XmlTextReader (string url, XmlNameTable nt)
                {
-                       Uri uri = resolver.ResolveUri (null, url);
-                       string uriString = uri != null ? uri.ToString () : String.Empty;
-                       Stream s = resolver.GetEntity (uri, null, typeof (Stream)) as Stream;
+                       string uriString;
+                       Stream stream = GetStreamFromUrl (url, out uriString);
                        XmlParserContext ctx = new XmlParserContext (nt,
                                new XmlNamespaceManager (nt),
                                String.Empty,
                                XmlSpace.None);
-                       this.InitializeContext (uriString, ctx, new XmlStreamReader (s), XmlNodeType.Document);
+                       this.InitializeContext (uriString, ctx, new XmlStreamReader (stream), XmlNodeType.Document);
                }
 
                public XmlTextReader (TextReader input, XmlNameTable nt)
@@ -116,6 +115,15 @@ namespace System.Xml
                {
                }
 
+               // This is used in XmlReader.Create() to indicate that string
+               // argument is uri, not an xml fragment.
+               internal XmlTextReader (bool dummy, string url, XmlNodeType fragType, XmlParserContext context)
+               {
+                       string uriString;
+                       Stream stream = GetStreamFromUrl (url, out uriString);
+                       this.InitializeContext (uriString, context, new XmlStreamReader (stream), fragType);
+               }
+
                public XmlTextReader (Stream xmlFragment, XmlNodeType fragType, XmlParserContext context)
                        : this (context != null ? context.BaseURI : String.Empty,
                                new XmlStreamReader (xmlFragment),
@@ -152,6 +160,13 @@ namespace System.Xml
                        InitializeContext (url, context, fragment, fragType);
                }
 
+               private Stream GetStreamFromUrl (string url, out string absoluteUriString)
+               {
+                       Uri uri = resolver.ResolveUri (null, url);
+                       absoluteUriString = uri != null ? uri.ToString () : String.Empty;
+                       return resolver.GetEntity (uri, null, typeof (Stream)) as Stream;
+               }
+
                #endregion
 
                #region Properties
index cfb99f451e685c6ec10d64b58a3d2e7177f9a355..e01d48aa1c1887f110c75cf7ba1576274a8ac70d 100644 (file)
@@ -130,6 +130,11 @@ namespace System.Xml
                        source = new XmlTextReaderImpl (baseURI, xmlFragment, fragType, context);
                }
 
+               internal XmlTextReader (bool dummy, string url, XmlNodeType fragType, XmlParserContext context)
+               {
+                       source = new XmlTextReaderImpl (dummy, url, fragType, context);
+               }
+
                private XmlTextReader (XmlTextReaderImpl entityContainer, bool insideAttribute)
                {
                        source = entityContainer;
index 37d4aead042205f208a5605d2444f4d744cdb057..4e09cf10feb2b5069f9f0466e6bcbadd88beb1b0 100644 (file)
@@ -1,3 +1,7 @@
+2005-10-01  Atsushi Enomoto <atsushi@ximian.com>
+
+       * XmlReaderCommonTests.cs : added simple Create() test.
+
 2005-09-28  Atsushi Enomoto <atsushi@ximian.com>
 
        * XmlNodeReaderTests.cs : added test for bug #76260.
index dc7c4bc113f8e798b6462d0442503a4a80de18a8..200baff59bbbf7bc13c7705b4e6390afa1600654 100644 (file)
@@ -1429,5 +1429,19 @@ namespace MonoTests.System.Xml
                        xmlReader.Read ();\r
                        AssertEquals (String.Empty, xmlReader.ReadInnerXml ());\r
                }\r
+\r
+#if NET_2_0\r
+               [Test]\r
+               public void CreateSimple ()\r
+               {\r
+                       XmlReader xr = XmlReader.Create ("Test/XmlFiles/nested-dtd-test.xml");\r
+                       xr.Read ();\r
+                       AssertEquals ("#1", XmlNodeType.DocumentType, xr.NodeType);\r
+                       xr.Read ();\r
+                       AssertEquals ("#2", XmlNodeType.Whitespace, xr.NodeType);\r
+                       xr.Read ();\r
+                       AssertEquals ("#3", XmlNodeType.Element, xr.NodeType);\r
+               }\r
+#endif\r
        }\r
 }\r