|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
26.03.2014, 08:23 | #1 |
Старожил
Регистрация: 04.02.2009
Сообщений: 17,351
|
Пару вопросов по XML
Плаваю в этом направлении, поэтому возникло несколько вопросов:
1. Что годного можно почитать, желательно с примерами использования для Делфи. Интересуют в основном некоторые готовые рецепты, шаблоны использования и пр. в том же духе. 2. У меня имеется некоторое описание типовой структуры набора данных. Как составить схему для проверки файлов на соответствие нужному мне формату.
Маньяк-самоучка
Utkin появился в результате деления на нуль. Осторожно! Альтернативная логика |
26.03.2014, 08:28 | #2 |
Старожил
Регистрация: 31.05.2010
Сообщений: 13,543
|
Utkin, ничё не понял. Нужен парсер XML?
Пиши пьяным, редактируй трезвым.
Справочник по алгоритмам С++ Builder |
26.03.2014, 08:53 | #3 |
Старожил
Регистрация: 04.02.2009
Сообщений: 17,351
|
Нет, парсер я и сам набросаю. Вот xml-ки имеют некоторую структуру - ну допустим, вот есть избитый учебный пример с каталогом книг.
Там обязательно прописывается автор, его инициалы, потом название книги, год издания, ISBN и пр. параметры. Так вот как отследить корректность XML-файла? Вот например, дают xml-ку, а в ней для одной книги полностью пропущен автор. Для отслеживания используются схемы. Есть специальные сервисы/программы/функции - валидаторы. С помощью схемы (своего рода шаблон структуры) можно не разбирая через парсер файл, проверить соответствует ли внутренняя структура файла заданным требованиям. Также можно допустим отслеживать версии формата, каталог ведь можно составлять по-разному или требования изменились, введены новые поля, убраны старые и т.д.
Маньяк-самоучка
Utkin появился в результате деления на нуль. Осторожно! Альтернативная логика |
26.03.2014, 09:08 | #4 |
Старожил
Регистрация: 31.05.2010
Сообщений: 13,543
|
Я поступил так. Взял "идеальный шаблон" необходимой мне структуры и сделал проверку полей. Если поле имеется, включаю в дерево его знаение. Если поле отсутствует, оно всё равно включается в дерево, но с пустым значением.
Таким образом, по наличию информации в полях, проверяется корректность заполнения файла значениями. У XML, есть ещё одна интересная особенность. Даже не зная "идеальный шаблон", его можно получить из самого файла, путём глобального анализа его полей. Вот, кусок файла. Код:
Пиши пьяным, редактируй трезвым.
Справочник по алгоритмам С++ Builder Последний раз редактировалось Smitt&Wesson; 26.03.2014 в 09:23. |
26.03.2014, 09:47 | #5 |
Старожил
Регистрация: 17.11.2010
Сообщений: 18,922
|
Можно проверить на соответствие схеме используя MSXML. Мне не понравилось, использую свой велосипед - держу иерархическую таблицу описания, в которой кроме всего прочего еще ожидаемые типы данных и предопределенные значения. Вот по ней проверяю и привожу к нужным типам данные. Ребята, от которых получаю редиски - имеют нехорошую привычку периодически без предупреждения вносить изменения в схему. Тогда и начинаются пляски с бубном
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
|
26.03.2014, 09:52 | #6 |
Подтвердите свой е-майл
Регистрация: 29.08.2012
Сообщений: 4,011
|
XML Schema (XSD) и Document Type Definition (DTD) дклайте, по ним валидировать
|
26.03.2014, 10:35 | #7 |
Участник клуба
Регистрация: 04.04.2010
Сообщений: 1,554
|
|
26.03.2014, 10:55 | #8 |
Старожил
Регистрация: 19.08.2009
Сообщений: 2,119
|
the_deer_one
Я бы сделал по факту парсинга, если при разборе xml-ки нет обязательного поля, кинулся бы эксцепшеном. а если поле есть, но не того типа? или в неправильной последовательности? или должно быть одно, а на самом деле два? или не выполнено требование минимальной длины? или поле ссылается на ID, которого нет в документе? xml схема как раз придумана для тех, кто кому нафик не уперлись все эти горы ручных проверок. хотя, конечно можно продолжать быть трактористом :lol:
А вы почему со мной не соглашаетесь, у вас что, импотенция? (c) ACE Valery
|
26.03.2014, 11:54 | #9 | ||
Старожил
Регистрация: 31.05.2010
Сообщений: 13,543
|
Такого не может быть т.к. все поля строковые, а приведение к необходимому типу, делается в самой программе.
Цитата:
Цитата:
Пиши пьяным, редактируй трезвым.
Справочник по алгоритмам С++ Builder |
||
26.03.2014, 11:59 | #10 | |
Старожил
Регистрация: 17.11.2010
Сообщений: 18,922
|
Цитата:
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
|
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Пару вопросов... | qewertyns | Помощь студентам | 6 | 10.12.2012 00:43 |
Пару вопросов | Syltan | Свободное общение | 2 | 19.10.2009 01:45 |
Пару элемментарных вопросов | Hanickii | Общие вопросы C/C++ | 15 | 13.09.2009 19:13 |