|
v7: Проверка xml по xsd | ☑ | ||
---|---|---|---|---|
0
ZloyGenie
04.12.12
✎
20:36
|
Здравствуйте уважаемые!
Сделал в 1с выгрузку в документ xml (декларация по алкоголю). Есть xsd файл для проверки. Подскажите как в 1с теперь проверить эту выгрузку с помощью xsd файла? И вообще возможно ли это? Щас та проверка, которую я намудрил просто проходит не выдавая ничего, хотя специально делал ошибку в названии раздела: Анализатор = СоздатьОбъект("AddIn.XMLParser"); Корень = Анализатор.СоздатьДокумент(); раздел = Корень.СоздатьПодчиненныйЭлемент("Раздел"); схема = Анализатор.СоздатьКоллекциюСхем(); схема.ДобавитьСхему("Схема", "c:\temp\my5.xsd"); Корень.Схемы = схема; Корень.Проверить(); Все делал через v7plus. Версия анализатора 2.0 пишет. |
|||
1
Dolly_EV
05.12.12
✎
04:21
|
http://infostart.ru/public/156973/
если нужна только проверка - то смотри функцию в модуле ВалидацияХМЛпоСхеме вот мой немного поправленный вариант (когда много однотипных ошибок - задумывается надолго на проверке, поэтому параметром КолвоВыводимыхОшибок ограничил количество показываемых ошибок): //====================================================================== Функция ВалидацияХМЛпоСхеме(ИмяФайла,ИмяСхемы,КолвоВыводимыхОшибок=1) Попытка Схема=СоздатьОбъект("MSXML2.XMLSchemaCache.6.0"); Исключение Сообщить("Не удалось создать объект XMLSchemaCache","!"); Возврат 0; КонецПопытки; Попытка Схема.add("",ИмяСхемы); Исключение Сообщить("Не удалось подключить схему: "+ИмяСхемы,"!"); Возврат 0; КонецПопытки; Попытка ДОМ=СоздатьОбъект("MSXML2.DOMDocument.6.0"); Исключение Сообщить("Не удалось создать объект DOMDocument","!"); Возврат 0; КонецПопытки; ДОМ.schemas=Схема; ДОМ.async=0; ДОМ.validateOnParse=-1; ДОМ.resolveExternals=-1; Если (КолвоВыводимыхОшибок>1) Тогда ДОМ.SetProperty("MultipleErrorMessages",-1); КонецЕсли; ДОМ.load(ИмяФайла); Если (ДОМ.parseError.errorCode<>0) Тогда // ошибки при проверке правильности ВывестиСообщение("При проверке по схеме файла "+ИмяФайла+" выявлены ошибки!",1); Если (КолвоВыводимыхОшибок>1) Тогда Для НомОш=0 По ДОМ.parseError.allErrors.length-1 Цикл parseError=ДОМ.parseError.allErrors.item(НомОш); ВывестиОшибкуРазбораХМЛ(parseError); Если НомОш>=КолвоВыводимыхОшибок Тогда ВывестиСообщение("...и еще "+(ДОМ.parseError.allErrors.length-1-НомОш)+" ошибок",1); Прервать; КонецЕсли; КонецЦикла; Иначе ВывестиОшибкуРазбораХМЛ(ДОМ.parseError); КонецЕсли; Возврат 0; КонецЕсли; ДОМ=""; Возврат 1; КонецФункции |
|||
2
ZloyGenie
05.12.12
✎
18:45
|
Спасибо, дружище!
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |