|   |   | 
| 
 | Запись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() - умеет в массивы и структуры.     | 
| Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |