|
v7: разбор XML файла, ошибка "Попытка смены источника в процессе разбора документа" | ☑ | ||
---|---|---|---|---|
0
Target25
18.01.16
✎
07:48
|
Пытаясь загрузить файл правил из ЗуП в ЗиК, столкнулся с этой ошибкой. Копая, выяснил, что "сыпется" в момент разбора узлов типа "параметр". В двух словах: при выполнении метода "Следующий()" AddIn.XMLParser всегда возвращает тип тега "1" (начало нового элемента), и не возвращает в нужном месте тип тега "3" (конец уровня).
Я вырезал все лишнее из файла правил и написал небольшую программу, которая моделирует ситуацию и падает с ошибкой. Текст программы: Процедура ОбработатьПараметры(мЧтениеXML) ТипТега = мЧтениеXML.Спуститься(); Пока ТипТега = 1 Цикл имяУзла = мЧтениеXML.СвойстваТекущегоУзла.Имя; Сообщить("Параметры:ТипТега " + ТипТега + "; имя узла " + имяУзла); ТипТега = мЧтениеXML.Следующий(); // как только кончаются параметры, он должен дать тип тега =3 КонецЦикла; мЧтениеXML.Подняться(); КонецПроцедуры //---- Процедура ОбработатьПравилаОбмена(мЧтениеXML) ТипТега = мЧтениеXML.Спуститься(); Пока ТипТега = 1 Цикл имяУзла = мЧтениеXML.СвойстваТекущегоУзла.Имя; Сообщить("Правила обмена:ТипТега " + ТипТега + "; имя узла " + имяУзла); Если имяУзла = "Параметры" тогда ОбработатьПараметры(мЧтениеXML); КонецЕсли; ТипТега = мЧтениеXML.Следующий(); КонецЦикла; мЧтениеXML.Подняться(); КонецПроцедуры //---- Процедура Сформировать() ЗагрузитьВнешнююКомпоненту(КаталогПрограммы() + "v7plus.dll"); мXMLАнализатор = СоздатьОбъект("AddIn.XMLParser"); мЧтениеXML = мXMLАнализатор.СоздатьПоследовательноСчитываемыйДокумент(); мЧтениеXML.СвязатьСФайлом("C:\ЗИК_ЗУП30.xml"); типТега = мЧтениеXML.Спуститься(); Если мЧтениеXML.СвойстваТекущегоУзла.Имя = "ПравилаОбмена" тогда ОбработатьПравилаОбмена(мЧтениеXML); КонецЕсли; КонецПроцедуры Файл правил обмена ЗиК_ЗУП80.xml: <ПравилаОбмена> <ВерсияФормата РежимСовместимости="РежимСовместимостиСБСП21">2.01</ВерсияФормата> <Ид>1c87001b-6b3a-4277-a36d-1e6d1a6c9793 </Ид> <Наименование>ЗиК --> ЗУП 3.0</Наименование> <ДатаВремяСоздания>2015-12-23T17:51:28</ДатаВремяСоздания> <Источник></Источник> <Приемник>БЗКР</Приемник> <ПередВыгрузкойДанных></ПередВыгрузкойДанных> <ПередЗагрузкойДанных></ПередЗагрузкойДанных> <ПослеЗагрузкиДанных></ПослеЗагрузкиДанных> <Параметры> <Параметр/> <Параметр/> <Параметр/> <Параметр/> <Параметр/> <Параметр/> </Параметры> <Обработки/> <ПравилаКонвертацииОбъектов/> <Запросы/> </ПравилаОбмена> Скриншот: http://i.imgur.com/eoyLbxq.png В общем, буду рад любым мыслям, как это проблему разрулить. |
|||
1
Target25
18.01.16
✎
08:10
|
Отмечу тот факт, что вот лично у вас это может работать нормально, как и задумано. Поэтому прошу попробовать данный код у себя.
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |