To implement menu editing, the intent is that a per-user file is
created. The per-user file should specify a <MergeFile> with the
system wide file, so that system changes are inherited. When the user
deletes a menu item, you add
<Exclude><Filename>foo.desktop</Filename></Exclude>. If
the user adds a menu item, you use
<Include><Filename>foo.desktop</Filename></Include>.
If the user moves a folder, you might try to use <Move> elements
to represent that, but it's tricky. (Move A/B/C to D/E/F, then move D/E
to D/G, note that D/E/F still contains A/B/C while only the original D/E
was moved to D/G.) In order to move a folder, you have to "fix up"
all moves that move things into the folder being
moved to instead move things into the folder's new location.
To delete a folder, simply append the <Deleted> element.
Menu editors probably need to do some kind of consolidation/compression
to avoid an XML tree that grows infinitely over time.