Гость
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / Валидация XML-документа по схеме / 20 сообщений из 20, страница 1 из 1
18.05.2007, 13:27
    #34535542
Vladimir_UA
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Валидация XML-документа по схеме
Нашел пример валидации 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
18.05.2007, 14:29
    #34535831
pecha
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Валидация XML-документа по схеме
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
18.05.2007, 14:29
    #34535835
pecha
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Валидация 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.
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
Период между сообщениями больше года.
28.01.2020, 12:44
    #39919400
SQL2008
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Валидация XML-документа по схеме
Как получить место в файле где произошла ошибка валидации XML по схеме XSD?
Файл огромный, что искать непонятно. Теги, на котором произошло событие ошибки валидации пересмотрел все.
На что ругается неясно.
Каб бы уточнить конкретно позицию в файле?
...
Рейтинг: 0 / 0
28.01.2020, 12:57
    #39919404
ЕвгенийВ
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Валидация XML-документа по схеме
...
Рейтинг: 0 / 0
28.01.2020, 13:31
    #39919432
SQL2008
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Валидация XML-документа по схеме
ЕвгенийВ, спасибо за подсказку.
Вроде то, что нужно но вот исключение XmlSchemaException не выбрасывается.
...
Рейтинг: 0 / 0
28.01.2020, 13:36
    #39919434
SQL2008
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Валидация XML-документа по схеме
Понятно почему.
Я использую XMLDocument.Validate(... , а это исключение выбрасывается при чтении XmlReader
...
Рейтинг: 0 / 0
28.01.2020, 13:42
    #39919436
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Валидация XML-документа по схеме
По InnerException путешествовал?
...
Рейтинг: 0 / 0
28.01.2020, 14:09
    #39919443
SQL2008
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Валидация XML-документа по схеме
Shocker.Pro
По InnerException путешествовал?

Пока нет.
...
Рейтинг: 0 / 0
28.01.2020, 14:10
    #39919444
SQL2008
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Валидация XML-документа по схеме
К сожалению LineNumber всегда возвращает 0.
...
Рейтинг: 0 / 0
28.01.2020, 14:35
    #39919451
ЕвгенийВ
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Валидация XML-документа по схеме
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
28.01.2020, 14:41
    #39919455
SQL2008
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Валидация XML-документа по схеме
...
Рейтинг: 0 / 0
28.01.2020, 14:51
    #39919463
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Валидация XML-документа по схеме
SQL2008
Shocker.Pro
По InnerException путешествовал?

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

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


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

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

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

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

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

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

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


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