Вход | Регистрация
 

ЗаписьXML несколько объектов

ЗаписьXML несколько объектов
Я
   repin_mike
 
09.07.21 - 14:17
Ниже код, который любой сериализуемый объект записывает в XML.
Как нужно изменить код, чтобы можно было бы в один файл записать несколько объектов?

    ТекстФайл = Новый ЗаписьТекста("C:\a.xml", КодировкаТекста.UTF8);
    ЗаписьXML = Новый ЗаписьXML;
    ЗаписьXML.УстановитьСтроку();    
    ЗаписатьXML(ЗаписьXML, ЛюбойСериализуемыйОбъект);
    ТекстФайл.Записать(ЗаписьXML.Закрыть());
    ТекстФайл.Закрыть();
   mikecool
 
1 - 09.07.21 - 14:21
цикл, например
а вообще - надо себя заставить
   Вафель
 
2 - 09.07.21 - 14:23
+ корень нужно добавить
   Kassern
 
3 - 09.07.21 - 14:23
(0) а зачем вообще запись текста делать, можно же сразу в xml писать. При закрыть он автоматом запишет файл.
   Fragster
 
4 - 09.07.21 - 14:23
ЛюбойСериализуемыйОбъект может быть массивом
   repin_mike
 
5 - 09.07.21 - 14:25
Насколько я прочитал справку, ЧтениеXML имеет метод Прочитать(), который возвращает истину или ложь в зависимости от того закончился текст или нет. Соответственно при записи, видимо, нужно как-то отделять записываемые объекты. Но как это сделать я не понял. По крайней мере, если записать два объекта, то так не работает

ЗаписатьXML(ЗаписьXML, ЛюбойСериализуемыйОбъект); 
ЗаписатьXML(ЗаписьXML, ЛюбойСериализуемыйОбъект2);
ТекстФайл.Записать(ЗаписьXML.Закрыть()); 


А как правильно?
   repin_mike
 
6 - 09.07.21 - 14:26
(4) По поводу массива понял, наверное сработает, но хочу понять как правильно
   Fragster
 
7 - 09.07.21 - 14:26
(6) это будет нормально
   Kassern
 
8 - 09.07.21 - 14:26
(3) типа 
ЗаписьXML = Новый ЗаписьXML;
ЗаписьXML.ОткрытьФайл("C:\a.xml", "UTF-8", Истина);
тут заполняем тело
ЗаписьXML.Закрыть();//тут как раз файлик запишется.
   Fragster
 
9 - 09.07.21 - 14:26
(5) так будет правильно, если добавить в корень элемент руками, а потом при считывании его пропускать, что не так просто, как (4)
   repin_mike
 
10 - 09.07.21 - 14:30
(8) Спасибо

(9)
МассивПрочитанныхОбъектов = Новый Массив;
Чтение = Новый ЧтениеXML;
Чтение.ОткрытьФайл("C:\a.xml");
Пока Чтение.Прочитать() Цикл
    Объект = ПрочитатьXML(Чтение);
    МассивПрочитанныхОбъектов.Вставить(Объект);
КонецЦикла;

Как записать, чтобы такой код прочитал все ранее записанные объекты?
   repin_mike
 
11 - 09.07.21 - 14:31
(+10) Массив.Добавить(), но не важно
   Kassern
 
12 - 09.07.21 - 14:36
(10) есть же куча пример чтения и записи xml. Загуглите, даже через фабрику есть пример чтения
   repin_mike
 
13 - 09.07.21 - 14:41
(12) То есть то, что написано в (10) - неверно?
   Kassern
 
14 - 09.07.21 - 14:48
(13) есть куча примеров, когда на выходе дерево значений, или массив структур/соответствий. Как тебе удобней, так и обрабатывай
   ДедМорроз
 
15 - 09.07.21 - 19:16
Если мы хотим что-то сериализовать,то положите это что-то в структуру и сериализуйте сколько хочется.
Просто,согласно правилам xml корневой объект должен быть один.
   youalex
 
16 - 09.07.21 - 20:33
(10) СериализаторXDTO.ЗаписатьXML() /ПрочитатьXML() - умеет в массивы и структуры.

Список тем форума
 
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.