private static XmlReader CreateFilteredXmlReader (XmlReader reader, XmlReaderSettings settings)
{
ConformanceLevel conf = ConformanceLevel.Auto;
if (reader is XmlTextReader)
conf = ((XmlTextReader) reader).Conformance;
else if (reader.Settings != null)
conf = reader.Settings.ConformanceLevel;
else
conf = settings.ConformanceLevel;
if (settings.ConformanceLevel != ConformanceLevel.Auto &&
conf != settings.ConformanceLevel)
throw new InvalidOperationException (String.Format ("ConformanceLevel cannot be overwritten by a wrapping XmlReader. The source reader has {0}, while {1} is specified.", conf, settings.ConformanceLevel));
settings.ConformanceLevel = conf;
reader = CreateValidatingXmlReader (reader, settings);
if ( settings.IgnoreComments ||
settings.IgnoreProcessingInstructions ||
settings.IgnoreWhitespace)
return new XmlFilterReader (reader, settings);
else {
reader.settings = settings;
return reader;
}
}