I didn't look at your code yet, but there is one thing I remember that you should take note of when setting up the code for the edit button, and that is to make sure that when you're done editing, you have some kind of "save" button or trigger that will cause the normal EQ2map functionality to still work. From testing, you could not revert the current poi.xml file being edited from the POI edit window itself. It just wouldn't trigger, or trigger too soon, and save data in the wrong place.
The way I got around data saving for characters when switching was to save the data in 2 places, but I can't remember off hand if it works correctly when switching and then switching back. But you basically have the POI window save the info, then you actually set the data yourself with the XML code, like Parent.POI.Save.Data.Area.Poi.Description = "new text you want to save". The data won't actually be able to find the correct path to save to, but will create a sort of fake "variable" in the reference tree with Parent.POI.Save.Data.Area.Poi.Description being the name of the variable.
The second place I save it is just in a config window using the settings' names as variables. I would always have default values set there. Upon first login it checks the POI file, if data exists, it copies it over to the config window. If you're making the notes global, and not per-character, it gets a bit easier. To make the data refresh when changing characters, you just need to trigger some kinda code when the window pops up to fetch it from one of the two places.
All of this made easier if we could just save text to the UISettings XML file
