Riley,
This may not help, but I use structured FrameMaker and our EDD defines a NoBrSpace ELEMENT, for which the EDD inserts a nonbreaking space. I do not export to XML, but my guess is that this element would be exported as an element but with no content. When read back into Frame, the Frame EDD inserts a nonbreaking space. No read-write rules are needed because the element remains an element in both the Frame space and the XML.
Now, I agree that this approach does NOT create a nonbreaking space in the XML; there it is just an element with no content. On the other hand, one can argue that a nonbreaking space is formatting, not content; it is used to prevent a line break at a certain spot in the content, which is formatting not content. IF the XML content is used elsewhere as XML data, such as content for a Web site, then maybe the Web site's CSS would be able to insert the correct code for a nonbreaking space.
Maybe the read-write rules can be defined to replace this element with the Ampersand-"nbsp"-semicolon code when exporting to XML and back to the element when importing to Frame. I have no idea how this would be done, just a concept.
If this helps, good; if not, sorry.
Van