Имя: Пароль:
1C
 
Скопировать XML как?
0 lexushka
 
12.05.26
10:37
Добрый день
Поискал -- не нашел

Требуется получить копию XML

Имею

ИсточникXML = Новый ЧтениеXML();
ИсточникXML.ОткрытьФайл(Источник);
ИсточникXML.Прочитать();


И вот после этих строк хочу получить копию ИсточникXML

Ничего не меняя

Ожидал какого-нибудь оператор последовательного чтения и тут же записи строка в строку и получается такого нет?
1 NorthWind
 
11.05.26
07:45
Ну в принципе это резонно, ЧтениеXML умеет только последовательно читать. Нужно завести еще ЗаписьXML  и написать цикл, записывая всё, что вычитал. Или покурить ДокументDOM (кажется, так это называется) - вот там реально создается копия документа в памяти, как объекта. Правда, для больших XMLей это бо-бо.
2 Fedor-1971
 
11.05.26
09:08
(0) Посмотри в сторону ИсточникXML.Строка (или как-то так) - это строка прочитанного XML.
Дальше делаешь ИсточникXML2.УстановитьСтроку() и Прочитать()
3 Сергиус
 
11.05.26
13:49
(0)Может есть смысл скопировать файл-источник и уже с ним работать?
4 Chameleon1980
 
11.05.26
15:41
(0)КопироватьФайл
5 Dzenn
 
гуру
11.05.26
15:43
просто прочитай два раза в две переменных и всё. Или, ты изначально выбрал неверный способ реализации своей задумки.
6 Dzenn
 
гуру
11.05.26
15:44
в чём задумка?
7 sikuda
 
11.05.26
17:03
(6) Задумка сделать утилиту для чтения больших XML файлов или поиска по нему?
https://github.com/sikudaPy/bigxmlread/releases/tag/bigxmlreader
8 trooba
 
12.05.26
10:08
(0) Вот. И не лохмать бабушку
9 sikuda
 
12.05.26
11:09
(8) Зачем поток если само ЧтениеXML работает как буфер чтения?
Другое дело когда ЧтениеXML читает данные из потока.
Чтение = Новый ЧтениеXML;
Чтение.ОткрытьФайл("C:\temp\data.xml"); // Укажите путь к файлу

// Читаем по очереди
Пока Чтение.Прочитать() Цикл
    // Проверяем тип узла
    Если Чтение.ТипУзла = ТипУзлаXML.НачалоЭлемента Тогда
    ...
    КонецЕсли;
КонецЦикла;

SAX (англ. «Simple API for XML») — способ последовательного чтения/записи XML-файлов.
10 Garykom
 
гуру
12.05.26
12:22
(0) Может еще хочешь получить копию ВыборкаИзРезультатаЗапроса?

РезультатЗапроса = Запрос.Выполнить();
Выборка = РезультатЗапроса.Выбрать();

"И вот после этих строк хочу получить копию Выборка"
11 Garykom
 
гуру
12.05.26
12:23
(10)+ Хотя еще Выборка.Следующий() забыл...
12 Timon1405
 
12.05.26
12:34
(10) зачем именно копию выборки?
можно обойти выборку и вызвать метод Выборка.Сбросить()
13 Garykom
 
гуру
12.05.26
12:40
(12) Это был намек что ТС хочет аналогичного но для последовательного чтения XML
Там тоже никто не мешает обойти и "сбросить"
Через вызов ПервоеОбъявление() или снова ОткрытьФайл()
14 АгентБезопасной Нацио
 
12.05.26
14:42
(12) может быть "клюшечное наследие" - типа обходить ТЗ двумя индексами...
15 Garykom
 
гуру
12.05.26
14:51
(14) Есть смысл в таком когда много вложенных
Для быстрого возврата в следующий самый верхний элемент, когда поняли что ветка не та
16 Галахад
 
гуру
12.05.26
15:16
(10) Вроде без проблем:

Владелец = Выборка.Владелец();
ВыборкаКопия = Владелец.Выбрать();
17 Garykom
 
гуру
12.05.26
15:29
(16) И чем отличается от (13) ?
Новая переменная и заново читаем файл и все
Компьютеры — прекрасное средство для решения проблем, которых до их появления не было.