|
Порядок обхода XML (1с 82) | ☑ | ||
---|---|---|---|---|
0
Mr_Best
30.12.11
✎
13:45
|
С наступающим коллеги! В преддверии праздника пришлось зависнуть с чтением XML.
Инвентарь задачи: Платформа: 1С:Предприятие 8.2.14.540 Файл: XML (версия 1.0) Архитектура файла: Корень "Данные" -- Узел "Номенклатура" ---- Элемент "Номенклатура" Код= и т.д и т.п. ---- .... ---- Элемент "Номенклатура" Код= и т.д и т.п. -- Узел "Цены" -- ..... -- Узел "Остатки" Вложенность данных = 3 уровня. (Узел корня => Узел списка => Узел элемента) Задача: Как обойти только узлы второго уровня? Или найти узел по наименованию? И вообще, кроме как обходить построчно весь документ XML что еще может 8.2. Пользовался инструментом: "ЧтениеXML". Пробывал подключать v7plus.dll - не удалось. Как просто и удобно можно перебрать XML в 8.2? (желательно так же удобно как v7plus.dll) |
|||
1
andrewks
30.12.11
✎
13:48
|
Функция ВывестиЭлем_ДОМ(ДОМ,Знач Смещ);
Рез=1; Попытка ТипУзла=ДОМ.ТипУзла; Если (ТипУзла=ТипУзлаDOM.Документ) Тогда ; ИначеЕсли (ТипУзла=ТипУзлаDOM.Элемент) Тогда Смещ=Смещ+" "; Сообщить(Смещ+"Элемент "+ДОМ.ИмяУзла+":",СтатусСообщения.Важное); Для каждого ТекАтр из ДОМ.Атрибуты Цикл Сообщить(Смещ+"Атрибут: "+ТекАтр.ИмяУзла+", значение: <"+ТекАтр.ЗначениеУзла+">"); КонецЦикла; ИначеЕсли (ТипУзла=ТипУзлаDOM.Текст) Тогда Сообщить(Смещ+"Текст элемента: <"+ДОМ.ЗначениеУзла+">"); ИначеЕсли (ТипУзла=ТипУзлаDOM.СекцияCDATA) Тогда Сообщить(Смещ+"CDATA: <"+ДОМ.ЗначениеУзла+">"); ИначеЕсли (ТипУзла=ТипУзлаDOM.Комментарий) Тогда Сообщить(Смещ+"Комментарий: <"+ДОМ.ЗначениеУзла+">",СтатусСообщения.Информация); Иначе Сообщить(Смещ+"Элемент "+ДОМ.ИмяУзла+":"); Сообщить(Смещ+"Тип: "+ДОМ.ЗначениеУзла); КонецЕсли; Для каждого ТекУзел из ДОМ.ДочерниеУзлы Цикл ВывестиЭлем_ДОМ(ТекУзел,Смещ); КонецЦикла; Исключение Сообщить(ОписаниеОшибки()); Рез=0; КонецПопытки; Возврат Рез; КонецФункции ПострДОМ=Новый ПостроительDOM; ХМЛ=Новый ЧтениеXML; ХМЛ.ОткрытьФайл(ИмяФайла,Новый ПараметрыЧтенияXML(,,,ТипПроверкиXML.НетПроверки)); ДОМ=ПострДОМ.Прочитать(ХМЛ); ВывестиЭлем_ДОМ(ДОМ,""); ХМЛ.Закрыть(); |
|||
2
Mr_Best
30.12.11
✎
13:56
|
Хороший подарочек на новый год ))))) Спасибо.
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |