Пытался создать валидатор для моих XML-файлов. Я использовал некоторые другие примеры, которые можно найти на этом сайте (например, Как проверить документ XML? ).
Я просто не вижу, чтобы это работало так, как я ожидаю. Что на самом деле подтверждается?
Почти независимо от того, что я изменяю в XML-файле, проверка валидатора видит это как ошибку. Я думал, что валидатор увидит, содержит ли файл xml элемент, не определенный в xsd. Валидатор только перехватывает нормальные синтаксические ошибки XML.
Так какой смысл использовать xsd, если он не имеет влияния?
Мой валидатор
string xsd_file = "Message.xsd";
XmlSchema xsd = new XmlSchema();
xsd.SourceUri = xsd_file;
XmlSchemaSet ss = new XmlSchemaSet();
ss.ValidationEventHandler += new ValidationEventHandler(ValidationEventHandler);
ss.Add(null, xsd_file);
if (ss.Count > 0)
{
XmlReaderSettings settings = new XmlReaderSettings();
settings.ValidationType = ValidationType.Schema;
settings.Schemas.Add(ss);
settings.Schemas.Compile();
settings.ValidationEventHandler += new ValidationEventHandler(ValidationEventHandler);
XmlTextReader r = new XmlTextReader(filepath);
using (XmlReader reader = XmlReader.Create(r, settings))
{
try
{
while (reader.Read())
{
}
}
catch (XmlException ex)
{
throw;
}
}
}