У меня есть веб-сервис, который получает определенный XML, в котором нет схемы, указанной в самом файле.
У меня есть XSD-схемы в моем проекте, которые будут использоваться для проверки полученных XML-файлов на них.
Проблема в том, что, что бы я ни делал, валидатор, похоже, принимает файлы, даже если они недействительны.
Код, который я использую, таков (некоторые части опущены для упрощения):
var schemaReader = XmlReader.Create(new StringReader(xmlSchemeInput));
var xmlSchema = XmlSchema.Read(schemaReader, ValidationHandler);
var xmlReaderSettings = new XmlReaderSettings();
xmlReaderSettings.Schemas.Add(xmlSchema);
xmlReaderSettings.ValidationEventHandler += ValidationHandler;
xmlReaderSettings.ValidationType = ValidationType.Schema;
xmlReaderSettings.ValidationFlags |= XmlSchemaValidationFlags.ProcessIdentityConstraints;
xmlReaderSettings.ValidationFlags |= XmlSchemaValidationFlags.ReportValidationWarnings;
xmlReaderSettings.ValidationFlags |= XmlSchemaValidationFlags.ProcessSchemaLocation;
using(var xmlReader = XmlReader.Create(new StringReader(xmlInput), xmlReaderSettings))
{
while (xmlReader.Read()) { }
}
// return if the xml is valid or not
Я нашел несколько решений со встроенной указанной схемой, которые прекрасно работают, но с такой схемой (которая, как я полагаю, должна работать) я не могу найти ни одной.
Я что-то не так делаю? Или я просто ошибаюсь, полагая, что так должно работать?
Спасибо!