Как лучше реализовать проверку структуры XML #704395


#0 by Антиквар
Всем привет! Есть 1C 8.1. и 1С 8.2. (не принципиально что использовать, но вдруг в 8.2. есть что-то полезное для XML, чего нет в 8.1.) Есть некие файлы формата XML. Требуется эти файлы периодически загружать в базу, предварительно проверив структуру XML. Структура XML описана в ворде в виде таблички. Все тэги и элементы расписаны, обязательность и тип данных установлены. Формат XML периодически претерпевает изменения. Вопрос: как лучше реализовать проверку структуры XML. Должна соблюдаться последовательность элементов (тэгов), а также тип данных. Ну тип данных я думаю будет проверяться уже при непосредственной загрузке этих данных в базу, а вот предварительная проверка структуры? Я думал делать либо макет со структурой файла, либо справочник в 1С с этой структурой. Причем макет думаю предпочтительней, т.к. формат XML может меняться. Но вот мне кажется, что есть какие-то более прогрессивные средства. Знаю, что есть специальные схемы описания формата, что на основании их как-то формат проверяется. Например для сдачи 2-НДФЛ есть описание формата XML, а также файл-шаблон (может не так называется правильно), на основании которого наверное спец. программы в налоговой как раз и проверяют структуру, да и тот же CheckXML. Подскажите, кто занимается такими вещами, как лучше реализовать. Читал сейчас про всякие XDTO-фабрики, объекты DOM,... что-то ничего не понял, да и возможно это не то что мне надо, во всяком случае надеюсь на это :) Вообще с разбором XML проблем нет, но вот первый раз встала задача проверки структуры. Или легче не заморачиваться, а сделать макет в 1С со структурой файла, и сверять с ним?
#1 by Антиквар
Т.е. главный мой вопрос в том, возможно ли создать файл-описание структуры моего XML, чтобы потом я мог на основании его проверять файлы XML, либо чтоб 1С могла сама проверить файл XML по этому файлу-описанию? Я видел так называемые "XML Schema", но не понял как это использовать. Пока мне кажется проще и очевиднее сделать в 1С макет со структурой, но может это прошлый век уже ? :)
#2 by Wobland
я читал xml-ку по приложенной схеме. рыться в бардачке?
#3 by Ksandr
Берешь XSD создаешь фабрику, скармливаешь ей файл получаешь объект
#4 by Антиквар
Схемы не существует, есть просто описание в ворде, как приложение к приказу. Если схему самому создавать - это сложно? Но формат большой, таблица на 12 листов в ворде. Если не сложно, поделитесь как это делается, может приду к такому решению. XSD - это как раз файл-описание структуры? Но у меня его нет, его вообще нет. Про остальное вообще не понял, какой объект на выходе я получаю?
#5 by Wobland
ты непременно придёшь к мысли о том, что нормальная схема (xsd) сильно лучше каракулей на листочке (word). изучай
#6 by Wobland
кстати, свою схему я нашёл прямо в xml. оказалась немного сложнее, чем ожидал <FictionBook xmlns=";
#7 by Asmody
описание есть - ну так создай схему, это несложно
#8 by Антиквар
>> ты непременно придёшь к мысли о том, что нормальная схема (xsd) сильно лучше каракулей на листочке (word) Но дело в том, что при изменении формата я буду получать тоже описание в табличке ворда :) Т.е. схему создавать всегда самому. Поэтому данная процедура имеет смысл только в том случае, если так намного удобнее реализовать проверку структуры. Имеешь ввиду, что в заголовке XML указана ссылка на схему? У нас заголовок обычный "<?xml version="1.0" encoding="windows-1251"?>" Или я не понял о чем речь :) Как создавать схему - нужно ещё учиться. И даже научившись, мне кажется, что перенести структуру в макет 1С всё-равно проще, чем создавать схему XSD. Но я так понимаю, что зато проверку структуры со схемой можно как-то автоматизировать? Т.е. потом процесс проверки и загрузки XML-файлов будет проще? Я просто не представляю пока, что делать с созданной схемой, как её использовать для проверки структуры файлов. Соответственно боюсь ввязаться в это дело, потеряв кучу времени, и не получив ожидаемого. Поэтому вопрос в том, оправдан ли этот "геморой" (во всяком случае для меня пока геморой). -------------------------------------------------- Ещё поясню: форматы XML разрабатываются не мной, а гос.органами на региональном и федеральном уровне. Никаких схем у меня никогда не будет, т.к. они их не делают. Только если я сам, прочитав описание формата, буду эти схемы создавать. Но поясните, как их потом использовать? :)
#9 by Антиквар
up
#10 by SleepyHead
"Ещё поясню: форматы XML разрабатываются не мной, а гос.органами на региональном и федеральном уровне. " Что за файлы? На примере отчетов в ПФР и НДФЛ - схемы есть, и они публикуются.
#11 by SleepyHead
Наверняка есть схемы, просто у вас их почему-то нет.
#12 by Антиквар
Это файлы обмена между медицинскими организациями и ФОМСом, а также между мед. организациями и страховыми. Ну в общем отчетность по больницам и прочим мед. учреждениям.
#13 by Vladuha
XSD тебе в помощь, для начала сгенерируй на основе xml, таких сервисов навалом, например
#14 by Антиквар
Спасибо. Т.е. я могу сгенерировать XSD по XML, но поскольку ни один XML не включает полностью весь формат (слишком много различных частных случаев), то потом вручную надо доработать XSD. Ну хорошо, допустим я создам XSD. А что дальше с ним делать, почему с ним проще проверить структуру XML? Есть какие-то стандартные команды в 1С? Не поделитесь кусочком кода, как осуществляется проверка XML на основании XSD. В чем удобство?
#15 by Maxus43
Проверить (Validate) Синтаксис: Проверить Описание: Проверяет данный объект на соответствие модели XDTO.
#16 by Антиквар
Спасибо, но видимо кроме синтаксис-помощника мне надо что-то ещё почитать, чтобы понять хоть что-то :)
#17 by Леша1с
вам предлагают сначала разработать ключ к вашему файлу XML. Если разработаете схему - всегда можно найти, соответствует ли данный XML файл тому, что ожидается (схеме XML). Тут вообще все сугубо-ручное. Ручная обработка, "ручное" чтение...
#18 by Maxus43
что то типа
#19 by Maxus43
ФабрикаXDTO (XDTOFactory) На основе набора схем XML Синтаксис: Там потом можно создавать объекты фабрики на основе схем и писать их в XMl. Перед записью можно дополнительно юзать Проверить на фабрике, оно проверит на валидность файла xml схеме xml
#20 by Maxus43
для простоты xdto пакет можно в конфигурации добавить (импортировать схему xml, чтоб файлики не искать потом со схемой)
#21 by Зойч
Все равно файл ворд нужно будет перевести в машиночитаемый вид. Естественно выбрать для этого уже известный все xsd формат
#22 by Vladuha
xsd - это по сути схема, описывающая струтуру xml-документа, т.е. с помощью xsd как раз выполняется проверка xml-документа на "правильность". Грубо говоря, загрузил схему, подсунул xml-документ, вызвал проверку, получил либо либо ОК (документ валиден), либо ошибку (xml не соответствует шаблону). В 1С есть такое понятие, как xdto. Это 1Совский механизм для работы со схемами. Вот посмотри, например на инфостарте
#23 by Зойч
Кстати как вариант можно написать обработку конвертор ворд > xsd
#24 by Леша1с
XDTO - это механизм доступа (работы) с XML. Это чуть переделанный и переобозванный (а как же!) SOAP.
#25 by Vladuha
Согласен, не совсем верно написал.
#26 by Антиквар
Спасибо за участие в вопросе! Что-то проясняется. >> Все равно файл ворд нужно будет перевести в машиночитаемый вид. >> Естественно выбрать для этого уже известный всем xsd формат Вот для меня это и неестественно как раз :) Я понимаю, что формат нужно перевести в машиночитаемый. Я и хотел использовать для этого объект конфигурации "Макет". И при загрузке XML проверять на соответствие моему макету. Т.е. самому писать программный код проверки. Я правильно понимаю, что лучше сделать не Макет, а файл XSD, и тогда проверку мне писать не надо, 1С будет выполянть её сама по моему шаблону XSD. Так? >>загрузил схему, подсунул xml-документ, вызвал проверку, получил либо либо ОК (документ валиден), либо ошибку (xml не соответствует шаблону). Мне нужна не просто ошибка, нужно указать, где именно эта ошибка случилась и почему. Ошибки: - Ошибочный порядок тегов - Отсутствует обязательное поле - Неверный тип данных - Неверный код (это когда переданы коды, отсутствующие в справочниках) - Дубль ключевого идентификатора (это когда есть повторение неких уникальный полей). Если я сделаю свой макет-шаблон и сам буду проверять, то я смогу любые ошибки обнаружить. А вот с помощью встроенных средств через XSD вдруг так получится, что валидность сработает при ошибке например "Неверный код". Можно ли такую проверку заложить в структуру XSD...
#27 by Vladuha
для примера тебе текст ошибки: Cvc-complex-type.2.4.a: Invalid Content Was Found Starting With Element 'author1'. One Of '{author, Title}' Is Expected.. Line '3', Column '18'.
#28 by Антиквар
Спасибо за ссылку, обязательно прочту.
#29 by Vladuha
+ я думаю, что суть ты поймешь - есть описание ошибки и строка и позиция в строке
Тэги: 1С 8
Ответить:
Комментарии доступны только авторизированным пользователям

В этой группе 1С