Работа с XML по интерфейсу DOM Ключевые слова: xml, dom
Примеры для 1С:Предприятие 7.7
Запись в XML
//*******************************************
Процедура _ЗаписатьВXML()
ок=1;
имяф=КаталогИБ()+"tovar3.xml";
tt1=_GetPerformanceCounter();
Сообщить("Запись XML-файла: "+имяф);
objDom=СоздатьОбъект("MSXML.DOMDocument");
xnodePINode =objDom.CreateProcessingInstruction("xml", "version='1.0' encoding='windows-1251'");
objDom.insertBefore(xnodePINode,);
elem1 = objDom.createElement("Товары");
objDom.appendChild(elem1);
о=СоздатьОбъект("Справочник.Товары");
о.ВыбратьЭлементы();
Пока о.ПолучитьЭлемент()=1 Цикл
Если о.ЭтоГруппа()=1 Тогда
Продолжить;
КонецЕсли;
Если о.ПометкаУдаления()=1 Тогда
Продолжить;
КонецЕсли;
elem2 = objDom.createElement("Элемент");
elem1.appendChild(elem2);
attr2 = objDom.createAttribute("Код");
attr2.nodeValue = о.Код;
elem2.setAttributeNode(attr2);
attr2 = objDom.createAttribute("Наименование");
attr2.nodeValue = о.Наименование;
elem2.setAttributeNode(attr2);
attr2 = objDom.createAttribute("Единица");
attr2.nodeValue = СокрЛП(о.Единица);
elem2.setAttributeNode(attr2);
attr2 = objDom.createAttribute("Цена");
attr2.nodeValue = Число1(о.Цена);
elem2.setAttributeNode(attr2);
КонецЦикла;
objDom.save(ИмяФ);
tt2=_GetPerformanceCounter();
Сообщить("Время выполнения: "+(tt2-tt1)/1000+" секунд");
КонецПроцедуры
См. также
Книга знаний: Чтение и запись текстовых файлов XML средствами 1С:Предприятие 7.7
Книга знаний: v8: Пример чтения XML через XML DOM
Чтение из XML
//*******************************************
Процедура _СверитьСXML()
tt1=_GetPerformanceCounter();
имяф=КаталогИБ()+"tovar3.xml";
Сообщить("Проверка XML-файла: "+имяф);
objDom=СоздатьОбъект("MSXML.DOMDocument");
objDom.load(имяф);
о=СоздатьОбъект("Справочник.Товары");
obj = objDom.selectNodes("//Товары") ;
Для i1 = 0 По obj.length - 1 Цикл
obj1=obj.item(i1);
для i2=1 по obj1.childNodes.length Цикл
obj2=obj1.childNodes.item(i2-1);
Код=0+obj2.getAttribute("Код");
Если о.НайтиПоКоду(Код,0)=0 Тогда
Сообщить("Код не найден: "+код);
ок=0;
КонецЕсли;
Наименование=obj2.getAttribute("Наименование");
Единица=obj2.getAttribute("Единица");
Цена=0+obj2.getAttribute("Цена");
Если СокрП(о.Наименование)<>СокрП(Наименование) Тогда
Сообщить("Наименования не соответствуют для кода: "+код);
Сообщить("Наименование в базе: "+о.Наименование);
Сообщить("Наименование в XML : "+Наименование);
ок=0;
КонецЕсли;
Если СокрП(о.Единица)<>СокрП(Единица) Тогда
Сообщить("Единицы не соответствуют для кода: "+код);
Сообщить("Единица в базе: "+о.Единица);
Сообщить("Единица в XML : "+Единица);
ок=0;
КонецЕсли;
Если о.Цена<>Цена Тогда
Сообщить("Цены не соответствуют для кода: "+код);
Сообщить("Цена в базе: "+о.Цена);
Сообщить("Цена в XML : "+Цена);
ок=0;
КонецЕсли;
КонецЦикла;
КонецЦикла;
tt2=_GetPerformanceCounter();
Сообщить("Время выполнения: "+(tt2-tt1)/1000+" секунд");
КонецПроцедуры
|