Ну в принципе это резонно, ЧтениеXML умеет только последовательно читать. Нужно завести еще ЗаписьXML и написать цикл, записывая всё, что вычитал. Или покурить ДокументDOM (кажется, так это называется) - вот там реально создается копия документа в памяти, как объекта. Правда, для больших XMLей это бо-бо.
(0) Посмотри в сторону ИсточникXML.Строка (или как-то так) - это строка прочитанного XML.
Дальше делаешь ИсточникXML2.УстановитьСтроку() и Прочитать()
Требовать и эффективности, и гибкости от одной и той же программы — все равно, что искать очаровательную и скромную жену... по-видимому, нам следует остановиться на чем-то одном из двух. Фредерик Брукс-младший