return
level == ConformanceLevel.Fragment ?
XmlNodeType.Element :
- XmlNodeType.Element;
+ XmlNodeType.Document;
}
public static XmlReader Create (Stream stream)
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")]
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)
{
}
+ // 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),
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
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;
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