Нет пути к write objects to the file without overwrite the same file
.Если вы хотите прочитать файл, вставьте некоторые элементы посередине, затем выведите оставшуюся часть файла, которую вам либо нужно прочитать в памяти, затем снова запишите все это, либо запишите во временный файл, где вы выполняете вставку, изатем скопируйте временный файл поверх оригинала.
Итак, в вашем случае замените выходной файл на временный, а затем скопируйте его поверх оригинала, когда закончите выводить его.
Пример процесса потоковой передачи: Например, если вы вводите input.xml:
<books>
<Book>Genesis</Book>
<Bool>Leviticus</Book>
</books>
, вы будете читать элементы до тех пор, пока не достигнете точки, в которую хотите добавить новую книгу, записав в выходной файл
read
<books>
write
<books>
read
<Book>Genesis</Book>
write
<Book>Genesis</Book>
, затем добавьте книгу, которую хотите добавить
write
<Book>Exodus</Book>
, затем продолжите с остальными
read
<Book>Leviticus</Book>
write
<Book>Leviticus</Book>
read
</books>
write
</books>
В результате output.xml:
<books>
<Book>Genesis</Book>
<Bool>Exodus</Book>
<Bool>Leviticus</Book>
</books>
Этогораздо проще работать с SAX, чем с чем-то, что объединяет все книги в массиве.Вам, вероятно, не нужно делать это, если вы не обрабатываете большие объемы данных.