Обновление XML в принципе невозможно, потому что нет «дешевого» способа вставки данных.
Добавление XML не так уж плохо. Все, что вам нужно сделать, это выполнить поиск в конце файла, затем GO BACK над «конечным тегом» (в данном случае ), а затем просто начать запись. Все это дешевая операция, но ни одна из фреймворков действительно не поддерживает это, поскольку все они в основном предназначены для работы с правильно сформированными, полными рабочими XML-документами в целом, а не по частям.
Вы можете использовать что-то вроде StAX, но в этом случае StAX не знает о теге , а просто знает о тегах и его элементах. Затем вы создаете Предметы и начинаете многократно записывать в тот же OutputStream, который вы настроили.
Это лучший способ сделать это.
Но если вам нужно удалить или изменить данные, то вы можете переписать что-либо или сделать хаки, например пометить элементы как «неактивные», отыскать их в файле XML и найти «active =" Y » 'атрибут, а затем на месте, изменив Y на N. Это можно сделать, это будет в основном эффективно, но это далеко за пределами того, что позволяют делать обычные платформы обработки XML. Если бы мне пришлось это сделать, я бы прочитал весь файл, отслеживал эти записи и отмечал их расположение в нем, чтобы позже я мог легко найти и изменить их.
Затем, когда вы обновляете что-то, вы «деактивируете» старое и «добавляете» новое. В конце концов получите GC файл, переписав его и выбросив старые, «неактивные» записи.