|
ЗаписьXML несколько объектов | ☑ | ||
---|---|---|---|---|
0
repin_mike
09.07.21
✎
14:17
|
Ниже код, который любой сериализуемый объект записывает в XML.
Как нужно изменить код, чтобы можно было бы в один файл записать несколько объектов? ТекстФайл = Новый ЗаписьТекста("C:\a.xml", КодировкаТекста.UTF8); ЗаписьXML = Новый ЗаписьXML; ЗаписьXML.УстановитьСтроку(); ЗаписатьXML(ЗаписьXML, ЛюбойСериализуемыйОбъект); ТекстФайл.Записать(ЗаписьXML.Закрыть()); ТекстФайл.Закрыть(); |
|||
1
mikecool
09.07.21
✎
14:21
|
цикл, например
а вообще - надо себя заставить |
|||
2
Вафель
09.07.21
✎
14:23
|
+ корень нужно добавить
|
|||
3
Kassern
09.07.21
✎
14:23
|
(0) а зачем вообще запись текста делать, можно же сразу в xml писать. При закрыть он автоматом запишет файл.
|
|||
4
Fragster
гуру
09.07.21
✎
14:23
|
ЛюбойСериализуемыйОбъект может быть массивом
|
|||
5
repin_mike
09.07.21
✎
14:25
|
Насколько я прочитал справку, ЧтениеXML имеет метод Прочитать(), который возвращает истину или ложь в зависимости от того закончился текст или нет. Соответственно при записи, видимо, нужно как-то отделять записываемые объекты. Но как это сделать я не понял. По крайней мере, если записать два объекта, то так не работает
ЗаписатьXML(ЗаписьXML, ЛюбойСериализуемыйОбъект); ЗаписатьXML(ЗаписьXML, ЛюбойСериализуемыйОбъект2); ТекстФайл.Записать(ЗаписьXML.Закрыть()); А как правильно? |
|||
6
repin_mike
09.07.21
✎
14:26
|
(4) По поводу массива понял, наверное сработает, но хочу понять как правильно
|
|||
7
Fragster
гуру
09.07.21
✎
14:26
|
(6) это будет нормально
|
|||
8
Kassern
09.07.21
✎
14:26
|
(3) типа
ЗаписьXML = Новый ЗаписьXML; ЗаписьXML.ОткрытьФайл("C:\a.xml", "UTF-8", Истина); тут заполняем тело ЗаписьXML.Закрыть(); //тут как раз файлик запишется. |
|||
9
Fragster
гуру
09.07.21
✎
14:26
|
(5) так будет правильно, если добавить в корень элемент руками, а потом при считывании его пропускать, что не так просто, как (4)
|
|||
10
repin_mike
09.07.21
✎
14:30
|
(8) Спасибо
(9) МассивПрочитанныхОбъектов = Новый Массив; Чтение = Новый ЧтениеXML; Чтение.ОткрытьФайл("C:\a.xml"); Пока Чтение.Прочитать() Цикл Объект = ПрочитатьXML(Чтение); МассивПрочитанныхОбъектов.Вставить(Объект); КонецЦикла; Как записать, чтобы такой код прочитал все ранее записанные объекты? |
|||
11
repin_mike
09.07.21
✎
14:31
|
(+10) Массив.Добавить(), но не важно
|
|||
12
Kassern
09.07.21
✎
14:36
|
(10) есть же куча пример чтения и записи xml. Загуглите, даже через фабрику есть пример чтения
|
|||
13
repin_mike
09.07.21
✎
14:41
|
(12) То есть то, что написано в (10) - неверно?
|
|||
14
Kassern
09.07.21
✎
14:48
|
(13) есть куча примеров, когда на выходе дерево значений, или массив структур/соответствий. Как тебе удобней, так и обрабатывай
|
|||
15
ДедМорроз
09.07.21
✎
19:16
|
Если мы хотим что-то сериализовать,то положите это что-то в структуру и сериализуйте сколько хочется.
Просто,согласно правилам xml корневой объект должен быть один. |
|||
16
youalex
09.07.21
✎
20:33
|
(10) СериализаторXDTO.ЗаписатьXML() /ПрочитатьXML() - умеет в массивы и структуры.
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |