|
Загрузка из XML | ☑ | ||
---|---|---|---|---|
0
thomY100
29.11.11
✎
10:29
|
Добрый день, есть такой вопрос, выгружаю данные из базы в XML следующим образом:
ЗаписьXML.ЗаписатьНачалоЭлемента("Организация"); ЗаписатьXML(ЗаписьXML, Организация.ПолучитьОбъект()); Пока Выборка.Следующий() Цикл ОбработкаПрерыванияПользователя(); ЗаписьXML.ЗаписатьНачалоЭлемента("Строка"); ЗаписатьXML(ЗаписьXML, "Строка"); ЗаписьXML.ЗаписатьНачалоЭлемента("ФизЛицо"); ЗаписатьXML(ЗаписьXML, Выборка.ФизЛицо.ПолучитьОбъект()); ЗаписьXML.ЗаписатьКонецЭлемента(); ЗаписьXML.ЗаписатьНачалоЭлемента("ПодразделениеОрганизации"); ЗаписатьXML(ЗаписьXML,Выборка.ПодразделениеОрганизации.ПолучитьОбъект()); ЗаписьXML.ЗаписатьКонецЭлемента(); КонецЦикла; ЗаписьXML.ЗаписатьКонецЭлемента(); Выгружается результат запроса и вроде бы нормально выгружается, теперь нужно загрузить в другой базе эти данные в документ, делаю так ЧтениеXML.Прочитать(); Пока ВозможностьЧтенияXML(ЧтениеXML) Цикл ЗаписанноеЗначение = ПрочитатьXML(ЧтениеXML); КонецЦикла; Но в цикле читается только корневой элемент, подскажите пожалуйста как прочитать все элементы с учетом иерархии? |
|||
1
rutony
29.11.11
✎
10:36
|
(0) Метод Прочитать(); читает узел, его нужно вызывать Н-раз пока не кончиться файл
что то наподобие: Пока Файл.Прочитать() Цикл // тут проверяешь что за узел прочитан и нужно ли что то делать КонецЦикла; |
|||
2
andrewks
29.11.11
✎
10:39
|
Функция ВывестиЭлем(ХМЛ,Знач Смещ);
Рез=1; Попытка Пока ХМЛ.Прочитать() Цикл ТипУзла=ХМЛ.ТипУзла; Если (ТипУзла=ТипУзлаXML.НачалоЭлемента) Тогда Смещ=Смещ+" "; Сообщить(Смещ+"Элемент "+ХМЛ.Имя+":",СтатусСообщения.Важное); Пока (ХМЛ.ПрочитатьАтрибут()) Цикл Сообщить(Смещ+"Атрибут: "+ХМЛ.Имя+", значение: <"+ХМЛ.Значение+">"); КонецЦикла; ИначеЕсли (ТипУзла=ТипУзлаXML.КонецЭлемента) Тогда Смещ=Лев(Смещ,СтрДлина(Смещ)-4); ИначеЕсли (ТипУзла=ТипУзлаXML.Текст) Тогда Сообщить(Смещ+"Текст элемента: <"+ХМЛ.Значение+">"); ИначеЕсли (ТипУзла=ТипУзлаXML.СекцияCDATA) Тогда Сообщить(Смещ+"CDATA: <"+ХМЛ.Значение+">"); ИначеЕсли (ТипУзла=ТипУзлаXML.Комментарий) Тогда Сообщить(Смещ+"Комментарий: <"+ХМЛ.Значение+">",СтатусСообщения.Информация); Иначе Сообщить(Смещ+"Элемент "+ХМЛ.Имя+":"); Сообщить(Смещ+"Тип: "+ХМЛ.Значение); КонецЕсли; КонецЦикла; Исключение Сообщить(ОписаниеОшибки()); Рез=0; КонецПопытки; Возврат Рез; КонецФункции ХМЛ=Новый ЧтениеXML; ХМЛ.ОткрытьФайл(ИмяФайла,Новый ПараметрыЧтенияXML(,,,ТипПроверкиXML.НетПроверки)); ВывестиЭлем(ХМЛ,""); ХМЛ.Закрыть(); ХМЛ=Неопределено; |
|||
3
thomY100
29.11.11
✎
10:50
|
а в какой момент мне получать ссылки на элементы?
я так понимаю их возвращает только метод ПрочитатьXML |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |