powered by simpleCommunicator - 2.0.50     © 2025 Programmizd 02
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / Валидация XML-документа по схеме
20 сообщений из 20, страница 1 из 1
Валидация XML-документа по схеме
    #34535542
Vladimir_UA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Нашел пример валидации xml-документа по схеме

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
using System;
using System.IO;
using System.Xml;
using System.Xml.Schema;

/// <summary>
/// Summary description for XMLValidation
/// </summary>
namespace Analysis
{
    class Program
    {
        static void main (string[] args)
        {
            XmlSchemaSet sc = new XmlSchemaSet();
            sc.Add("http://www.somesite.com", @"d:\physdata.xsd");
            XmlReaderSettings settings = new XmlReaderSettings();
            settings.ValidationType = ValidationType.Schema;
            settings.Schemas = sc;
            settings.ValidationEventHandler += new ValidationEventHandler(ProcessSchema);
            XmlReader reader = XmlReader.Create(@"d:\physdata.xml", settings);
        }
        private static void ProcessSchema(object sender, ValidationEventArgs e)
        {
            Console.WriteLine("Ошибка:{0}", e.Message);
        }
    }
}

не могу понять как его применить
хочу чтобы документ проверялся при нажатии на кнопку
Код: plaintext
1.
2.
3.
protected void btnXMLCheck_Click(object sender, EventArgs e)
    {
    }

Как быть?
...
Рейтинг: 0 / 0
Валидация XML-документа по схеме
    #34535831
pecha
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
protected void btnXMLCheck_Click(object sender, EventArgs e)
{


XmlSchemaSet sc = new XmlSchemaSet();
sc.Add("http://www.somesite.com", @"d:\physdata.xsd");
XmlReaderSettings settings = new XmlReaderSettings();
settings.ValidationType = ValidationType.Schema;
settings.Schemas = sc;
settings.ValidationEventHandler += new ValidationEventHandler(ProcessSchema);
XmlReader reader = XmlReader.Create(@"d:\physdata.xml", settings);

if (_isValid)
{
//.... сказать юзеру что все ок
}
else
{
//....сказать что все плохо и показать ошибки если нужно
//TextBox1.Text = _errors.ToString();
}
}

private static void ProcessSchema(object sender, ValidationEventArgs e)
{
_isValid = false;
errors.Append(e.Message);
}



GoDevs.com Cheap Domain Names | Free/Cheap Web Hosting | ASP.NET AJAX Web Hosting
...
Рейтинг: 0 / 0
Валидация XML-документа по схеме
    #34535835
pecha
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
private static bool _isValid = true;
    private static StringBuilder _errors = new StringBuilder();

protected void btnXMLCheck_Click(object sender, EventArgs e)
{


XmlSchemaSet sc = new XmlSchemaSet();
sc.Add("http://www.somesite.com", @"d:\physdata.xsd");
XmlReaderSettings settings = new XmlReaderSettings();
settings.ValidationType = ValidationType.Schema;
settings.Schemas = sc;
settings.ValidationEventHandler += new ValidationEventHandler(ProcessSchema);
XmlReader reader = XmlReader.Create(@"d:\physdata.xml", settings);

if (_isValid)
{
//.... сказать юзеру что все ок
}
else
{
//....сказать что все плохо и показать ошибки если нужно
//TextBox1.Text = _errors.ToString();
}
}

private static void ProcessSchema(object sender, ValidationEventArgs e)
{
_isValid = false;
errors.Append(e.Message);
}


GoDevs.com Cheap Domain Names | Free/Cheap Web Hosting | ASP.NET AJAX Web Hosting
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
Валидация XML-документа по схеме
    #39919400
Фотография SQL2008
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Как получить место в файле где произошла ошибка валидации XML по схеме XSD?
Файл огромный, что искать непонятно. Теги, на котором произошло событие ошибки валидации пересмотрел все.
На что ругается неясно.
Каб бы уточнить конкретно позицию в файле?
...
Рейтинг: 0 / 0
Валидация XML-документа по схеме
    #39919404
Фотография ЕвгенийВ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
Валидация XML-документа по схеме
    #39919432
Фотография SQL2008
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ЕвгенийВ, спасибо за подсказку.
Вроде то, что нужно но вот исключение XmlSchemaException не выбрасывается.
...
Рейтинг: 0 / 0
Валидация XML-документа по схеме
    #39919434
Фотография SQL2008
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Понятно почему.
Я использую XMLDocument.Validate(... , а это исключение выбрасывается при чтении XmlReader
...
Рейтинг: 0 / 0
Валидация XML-документа по схеме
    #39919436
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
По InnerException путешествовал?
...
Рейтинг: 0 / 0
Валидация XML-документа по схеме
    #39919443
Фотография SQL2008
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.Pro
По InnerException путешествовал?

Пока нет.
...
Рейтинг: 0 / 0
Валидация XML-документа по схеме
    #39919444
Фотография SQL2008
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
К сожалению LineNumber всегда возвращает 0.
...
Рейтинг: 0 / 0
Валидация XML-документа по схеме
    #39919451
Фотография ЕвгенийВ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SQL2008
ЕвгенийВ, спасибо за подсказку.
Вроде то, что нужно но вот исключение XmlSchemaException не выбрасывается.

Его не надо ловить.
https://docs.microsoft.com/ru-ru/dotnet/api/system.xml.schema.validationeventargs.exception?view=netframework-4.8#System_Xml_Schema_ValidationEventArgs_Exception
...
Рейтинг: 0 / 0
Валидация XML-документа по схеме
    #39919455
Фотография SQL2008
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
Валидация XML-документа по схеме
    #39919463
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SQL2008
Shocker.Pro
По InnerException путешествовал?

Пока нет.
Как правило, всякие исключения по xml надо там искать, потому что обход дерева рекурсивный и реальная ошибка может оказаться в самом низу )
...
Рейтинг: 0 / 0
Валидация XML-документа по схеме
    #39919467
Roman Mejtes
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SQL2008,

ну дак в XML файле всё может быть в 1 строку, там еще номер символа в строке указывается. если мне память не изменяет.
...
Рейтинг: 0 / 0
Валидация XML-документа по схеме
    #39919475
Фотография SQL2008
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Roman Mejtes,
Код: xml
1.
[XML Validation Task] Error: "The element 'SOME_DATE' has invalid value" occured 1 times in file *****.xml


Вот и вся информация. А файл содержит порядка 2 миллионов записей
...
Рейтинг: 0 / 0
Валидация XML-документа по схеме
    #39919496
Фотография ЕвгенийВ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SQL2008

Это как так???

У тебя есть событие, у события есть аргумент ValidationEventArgs у которого одно из свойств содержит XmlSchemaException, которое в свою очередь номер строки и позицию в ней.
...
Рейтинг: 0 / 0
Валидация XML-документа по схеме
    #39919501
Roman Mejtes
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Можно, как вариант, посмотреть в какой позиции находится Reader в потоке данных. И потом найти эту позицию в файле и поискать в этом месте. Судя по сообщению у вас проблемы с форматом даты.
Вроде номер строки и номер символа в строке не работают, если поток данных не поддерживается Seek, но это не точно.
От куда XMLка? из веба читается?
...
Рейтинг: 0 / 0
Валидация XML-документа по схеме
    #39919503
Фотография SQL2008
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ЕвгенийВ
SQL2008

Это как так???

У тебя есть событие, у события есть аргумент ValidationEventArgs у которого одно из свойств содержит XmlSchemaException, которое в свою очередь номер строки и позицию в ней.

Верно, есть такое.
Вот только как и писал выше К сожалению LineNumber всегда возвращает 0.
...
Рейтинг: 0 / 0
Валидация XML-документа по схеме
    #39919514
Roman Mejtes
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SQL2008,
там кроме LineNumber есть еще свойство LinePosition как бы
...
Рейтинг: 0 / 0
Валидация XML-документа по схеме
    #39919597
Фотография SQL2008
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Roman Mejtes
SQL2008,
там кроме LineNumber есть еще свойство LinePosition как бы

Как бы тоже 0
...
Рейтинг: 0 / 0
20 сообщений из 20, страница 1 из 1
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / Валидация XML-документа по схеме
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]