You are absolutely right. My mistake.then that is the exactly value that it will present to the other end of the wire. The system does not and cannot know that you intend £ to be a character entity. The code you quote from Xerces will do the same as the XML-RPC code if getEntityRef( '&'); returns "&" as I believe that it does.
To another question, how then do you force some specific characters to be encoded as an entity ?
