Проверка правильности XML-файла по схеме вызывает исключение - PullRequest
0 голосов
/ 13 июня 2018

Я сталкиваюсь с ошибкой исключения при попытке проверить XML-файл по схеме в MVC / ASP.Net Core.

Я получаю следующую ошибку:

System.Xml.Schema.XmlSchemaValidationException: 'Type' http://ns.editeur.org/onix/3.0/reference:SourceTypeCode' не объявлено или не является простым типом. '

Мой код такой:

XmlSchemaSet onixschema = new XmlSchemaSet();

XDocument xmlDocument = XDocument.Load(@"path.to.xml.file");

onixschema.Add("http://ns.editeur.org/onix/3.0/reference", @"path.to.ONIX_BookProduct_3.0_reference.xsd");

xmlDocument.Validate(onixschema, (o, e) =>
        {
            validationResult.ErrorMessages.Add(e.Message);
        });

Я не знаю, с чего начать, за исключением.Это сообщение не очень дикое!

И что действительно удивительно, так это то, что если я запускаю этот точный код в WebForms / .Net (те же файлы и т. Д.), Он корректно проверяется.

Iне получите ошибку.

Если бы кто-нибудь смог пролить свет на это, я был бы очень признателен.

// Редактировать

Уверен, что эточто-то делать с ASP.Net Core.Если я создаю новое веб-приложение MVC / .Net и вставляю код в Home Controller, он работает как надо.Нет исключения для проверки.

Если я создаю новое приложение MVC / ASP.NET Core и вставляю код в Home Controller, произойдет сбой, за исключением проверки.

Может ли это бытьделать с тем, как ASP.NET Core обрабатывает статический XSD-файл?

Ответы [ 2 ]

0 голосов
/ 13 июня 2018

Хорошо, я вроде как ответил на вопрос.

Проблема заключалась в том, что XSD-файл импортирует еще два XSD-файла.Если я импортирую их вручную, создавая намного больший файл XSD, то проблема исчезнет.

Так что это связано с тем, как ASP.NET Core обрабатывает относительные пути.Он не обнаруживает, что нужно импортировать два XSD-файла или он не может их найти (тогда как Web Forms & MVC / .NET могут это сделать).Я пока не знаю почему!

0 голосов
/ 13 июня 2018

Сообщение ясно: SourceTypeCode 'не объявлен.

Чтобы убедиться, что в вашем XML-файле нет ошибок, вы можете проверить его с помощью XmlTools на notepad ++.

если у вас нет ошибок, то мы можем быть уверены, что проблема в вашем коде, а не в файле.

Плагины => Инструменты XML

С уважением,

...