The actual way I want to implement the writing part of the plugin also has the ability of batch processing. I am thinking of lists that gather all changes made since the last read or write and then write the whole list. The point I wanted to make with the updating is that the plugin adds/deletes/replaces contents in the file directly and does not replace the whole old file when writing. The nice part of the file-updating approach, with the mentioned lists that gather all the changes, is that it also supports "save-button-functionality". Therefore it would just gather all changes made during the lifetime and, at the click of the button, write them all out.
But I think I should explain how the "changes" are represented in the plugin: A change for me is an object of a class that represents part of one XML-File. Every class inherits a member flag that says whether the current object is in its original state, if it was added by the user, modified by the user or deleted by the user. Every object that is flagged different than "original" should be added to the "modification-lists" of the writing module. At some point in time (when the user clicks a button, or some other event occurs) the lists are processed and the corresponding XML elements are added/replaced/deleted.
To your point regarding errors and undoing actions: the updates will not be written after every keystroke of the user, I was rather thinking of instant when the user submits a form, like when he or she presses enter after finishing a comment. If an error was made and he or she edits the comment again then a new updating-write operation would be issued and the ModifiedDate and ModifiedAuthor alongside the comment itself would be updated (in case of the comment now). However, the handling of errors in viewpoints, after they were submitted, is a bit tricky. Because viewpoints are assumed to be not changeable (according to the standard). I still don't have a clear picture of how I might implement the creation of viewpoints in FreeCAD, this will change in the future!
For now I am concentrating my efforts on the writer module