internal XmlReader CreateReader(string inputUri, XmlParserContext inputContext)
{
XmlReader reader;
if (inputUri == null)
{
throw new ArgumentNullException("inputUri");
}
if (inputUri.Length == 0)
{
throw new ArgumentException(Res.GetString("XmlConvert_BadUri"), "inputUri");
}
System.Xml.XmlResolver xmlResolver = this.GetXmlResolver();
if (xmlResolver == null)
{
xmlResolver = this.CreateDefaultResolver();
}
Uri absoluteUri = xmlResolver.ResolveUri(null, inputUri);
Stream input = (Stream)xmlResolver.GetEntity(absoluteUri, string.Empty, typeof(Stream));
if (input == null)
{
throw new XmlException("Xml_CannotResolveUrl", inputUri);
}
XmlReaderSettings settings = this;
if (!settings.CloseInput)
{
settings = settings.Clone();
settings.CloseInput = true;
}
try
{
reader = settings.CreateReader(input, absoluteUri, null, inputContext);
}
catch
{
input.Close();
throw;
}
return(reader);
}