public XmlSchema Add(String ns, XmlReader reader, XmlResolver resolver)
{
if (reader == null)
throw new ArgumentNullException(nameof(reader));
XmlNameTable readerNameTable = reader.NameTable;
SchemaInfo schemaInfo = new SchemaInfo();
Parser parser = new Parser(SchemaType.None, readerNameTable, GetSchemaNames(readerNameTable), _validationEventHandler);
parser.XmlResolver = resolver;
SchemaType schemaType;
try
{
schemaType = parser.Parse(reader, ns);
}
catch (XmlSchemaException e)
{
SendValidationEvent(e);
return null;
}
if (schemaType == SchemaType.XSD)
{
schemaInfo.SchemaType = SchemaType.XSD;
return Add(ns, schemaInfo, parser.XmlSchema, true, resolver);
}
else
{
SchemaInfo xdrSchema = parser.XdrSchema;
return Add(ns, parser.XdrSchema, null, true, resolver);
}
}