|
|
Скопировать XML как?
SeriyP, Fedor-1971, LienXo, mzelensky, nick86, Доминошник, Timon1405, Сергиус, Олдж, Dedal, ass1c, runuts, ptiz, patapum, Bad_Aleks, N1troZeus, Argo, mTema32, crotnn, alexis_nov, Галахад, maxar, MAG, Garykom, АгентБезопаснойНацио, trooba, H A D G E H O G s, Zamestas, orakool, Sneer, RVN, trad, Fish, kubik_live, AntiBuh, paramedic, Garikk, mikecool, Гипервизор, PuhUfa, 1cVandal, Stepashkin, sikuda, toypaul, reg0303, alexxx961503, Silgis, Мультук, navigator, АНДР, Seriy_Volk, vbus, b_ru, Prog_man, RomanYS, viraboy, _Batoo, JohnGilbert, Группа неравнодушных, Злопчинский, Смотрящий от 1С, shuhard, Климов Сергей, yzimin, kir-g, evorle145, Builder, AlexKimp, Elf_80_lvl, hollow138, ndrv, END, obs191, Черников, Кирпич, DemonShinji2, Рамиль Маугли, Шурик71, vicof, Rokford, U4Me2, ADirks, Ногаминебить, Vstur
| ☑ |
|
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) ?
Новая переменная и заново читаем файл и все
|
|
|
18
ptiz
12.05.26
✎
17:12
|
(0) Если месье хочет извращений:
ЧтениеXML = Новый ЧтениеXML;
ЧтениеXML.ОткрытьФайл(ИмяИсходногоФайла);
ПостроительDOM = Новый ПостроительDOM;
ДокументDOM = ПостроительDOM.Прочитать(ЧтениеXML);
ЗаписьXML = Новый ЗаписьXML;
ЗаписьXML.УстановитьСтроку();
ЗаписьDOM = Новый ЗаписьDOM;
ЗаписьDOM.Записать(ДокументDOM, ЗаписьXML);
Стр = ЗаписьXML.Закрыть();
ЧтениеXML2 = Новый ЧтениеXML;
ЧтениеXML2.УстановитьСтроку(Стр);
|
|
Глупец, лишенный способности посмеяться над собой вместе с другими, не сможет долго выносить программирование. Фредерик Брукс-младший