gifts2017

Простые примеры работы с XML

Опубликовал Михаил (ZMGMSC) в раздел Программирование - Инструментарий

Обработка с примерами работы с XML. Включает в себя исползование
ЗаписьXML, ЧтениеXML, ПостроительDOM.
Чтение и запись данных в (из) файл(а) и память(и).

 

Обработка содержит  примеры работы с XML

Вот пример, как быстро прочитать файл, не зная структуры, потом в цикле выбрать все данные.

Чтение.УстановитьСтроку(Объект.Результат)

Используется для чтения данных из памяти (не из файла)

Часто применяется в веб сервисах.


&НаКлиенте
Процедура ЗаписатьX(Команда)
ЗаписатьXMLНаСервере();
КонецПроцедуры

&НаКлиенте
Процедура ПрочитатьX(Команда)
ПрочитатьXMLНаСервере();
КонецПроцедуры

&НаСервере
Процедура ПрочитатьXMLНаСервере()
Объект.ДокСсылка = ИзXML(Объект.Результат);
КонецПроцедуры

&НаСервере
Процедура ЗаписатьXMLНаСервере()
Если ТипЗнч(объект.ДокСсылка) = Тип("СправочникСсылка.Номенклатура") Тогда
Запрос = Новый Запрос;
Запрос.Текст = "ВЫБРАТЬ
| Товары.Ссылка
|ИЗ
| Справочник.Товары КАК Товары
|ГДЕ
| Товары.Ссылка В ИЕРАРХИИ(&Ссылка)";

Запрос.УстановитьПараметр("Ссылка", объект.ДокСсылка);

Результат = Запрос.Выполнить().Выгрузить();
Объект.Результат = СписокВXML(Результат);
Иначе
Объект.Результат = ВXML(объект.ДокСсылка);
КонецЕсли;
КонецПроцедуры

&НаСервере
Функция ВXML(ДокументСсылка)
ЗаписьXML = Новый ЗаписьXML;
ЗаписьXML.УстановитьСтроку();
ЗаписатьXML(ЗаписьXML, ДокументСсылка.ПолучитьОбъект());
Возврат ЗаписьXML.Закрыть();
КонецФункции

&НаСервере
Функция ИзXML(Стр)
ЧтениеXML = Новый ЧтениеXML;
ЧтениеXML.УстановитьСтроку(Стр);
ДО = ПрочитатьXML(ЧтениеXML);
ДО.ОбменДанными.Загрузка = Истина;
ДО.Записать(РежимЗаписиДокумента.Запись);
Возврат ДО.ССылка;
КонецФункции

&НаСервере
Функция СписокВXML(ВхТЗ)

ЗаписьXML = Новый ЗаписьXML;

ЗаписьXML.УстановитьСтроку("UTF-8");
ЗаписьXML.ЗаписатьОбъявлениеXML();

ЗаписьСообщения = ПланыОбмена.СоздатьЗаписьСообщения();
ЗаписьСообщения.НачатьЗапись(ЗаписьXML, ПланыОбмена.Мобильные.НайтиПоКоду("001"));

ЗаписьXML.ЗаписатьСоответствиеПространстваИмен("xsi", "http://www.w3.org/2001/XMLSchema-instance");
ЗаписьXML.ЗаписатьСоответствиеПространстваИмен("v8", "http://v8.1c.ru/data");

ТипДанныхУдаления = Тип("УдалениеОбъекта");

Для Каждого Стр Из ВхТЗ Цикл
ЗаписатьXML(ЗаписьXML, Стр.Ссылка.ПолучитьОбъект());
КонецЦикла;

ЗаписьСообщения.ЗакончитьЗапись();
Возврат ЗаписьXML.Закрыть();

КонецФункции

&НаСервере
Функция ТЗВXML()
КонецФункции

&НаКлиенте
Процедура ЗаписатьДОМ(Команда)
ЗаписатьДОМНаСервере();
КонецПроцедуры

&НаСервере
Процедура ЗаписатьДОМНаСервере()
//Запись = Новый ЗаписьXML;
//Запись.ОткрытьФайл("e:\bases\70\dom.xml");
//ЗаписьДом = Новый ЗаписьDOM;
//Дом = Новый ДокументDOM("www.zmgmsc.ru/testuri", "Корневой");
//Корневой = Дом.ЭлементДокумента;
//Элемент = Дом.СоздатьЭлемент("Имя");
//Элемент.ТекстовоеСодержимое = "Текст";
//Элемент.УстановитьАтрибут("Свойство", "Значение");
//Корневой.ДобавитьДочерний(Элемент);
//ЗаписьДом.Записать(Дом, Запись);
//Запись.Закрыть();

Чтение = Новый ЧтениеXML;
//Чтение.ОткрытьФайл("e:\bases\70\dom.xml");
Чтение.УстановитьСтроку(Объект.Результат);
ПостроительДом = Новый ПостроительDOM;
ДокументДом = ПостроительДом.Прочитать(Чтение);
Корневой = ДокументДом.ЭлементДокумента;
Дочерние = Корневой.ДочерниеУзлы;
Для Каждого Стр Из Дочерние Цикл
Сообщить(Стр.ИмяЭлемента + " " + Стр.ТекстовоеСодержимое);
КонецЦикла;
КонецПроцедуры

&НаКлиенте
Процедура СериализацияXDTO(Команда)
СериализацияXDTOНаСервере();
КонецПроцедуры

&НаСервере
Процедура СериализацияXDTOНаСервере()
ТекОБъект = Объект.ДокСсылка.ПолучитьОбъект();
ТекСерХДТО = Новый СериализаторXDTO(ФабрикаXDTO);
ЗаписьXML = Новый ЗаписьXML;
//Запись.ОткрытьФайл("e:\bases\70\dom.xml");
ЗаписьXML.УстановитьСтроку("UTF-8");
ЗаписьXML.ЗаписатьОбъявлениеXML();
//ЗаписьXML.ЗаписатьСоответствиеПространстваИмен("xsi", "http://www.w3.org/2001/XMLSchema-instance");
//ЗаписьXML.ЗаписатьСоответствиеПространстваИмен("v8", "http://v8.1c.ru/data");
ТекСерХДТО.ЗаписатьXML(ЗаписьXML, ТекОБъект, НазначениеТипаXML.Явное, ФормаXML.Элемент);
Объект.Результат = ЗаписьXML.Закрыть();
КонецПроцедуры

&НаКлиенте
Процедура ЗагрузкаСериализаторXDTO(Команда)
ЗагрузкаСериализаторXDTOНаСервере();
КонецПроцедуры

&НаСервере
Процедура ЗагрузкаСериализаторXDTOНаСервере()
Чтение = Новый ЧтениеXML;
Чтение.УстановитьСтроку(Объект.Результат);
ТекСерХДТО = Новый СериализаторXDTO(ФабрикаXDTO);
ТекОБъект = ТекСерХДТО.ПрочитатьXML(Чтение);
ТекОБъект.Записать();
Объект.ДокСсылка = ТекОБъект.Ссылка;

КонецПроцедуры

 

 


 

Скачать файлы

Наименование Файл Версия Размер Кол. Скачив.
Сериализатор
.epf 7,49Kb
28.05.14
14
.epf 1.1 7,49Kb 14 Скачать
Сериализатор
.epf 7,18Kb
28.05.14
11
.epf 1.0 7,18Kb 11 Скачать

См. также

Подписаться Добавить вознаграждение

Комментарии

1. mikhailovaew (mikhailovaew) 04.06.14 14:54
Текст программы неплохо бы раскрасить, а также снабдить комментариями, что и для чего делается.
RainyAugust22; bashirov.rs; +2 Ответить 1
2. Рамиль Баширов (bashirov.rs) 11.09.14 10:38
(1) mikhailovaew, Полностью согласен с вами! От себя скажу - как обработка рабочая?
3. Николай (nipil) 18.12.14 18:10
Чем отличаются прикрепленные файлы? - "Сериализатор"
4. Михаил (ZMGMSC) 19.12.14 11:34
разные версии. берите тот, что больше весит
5. kurt52 (Лариса52) 02.03.15 21:23
Не рвботает, выдаёт ошибки
Для написания сообщения необходимо авторизоваться
Прикрепить файл
Дополнительные параметры ответа