if your changes are simple enough, you could use XStream’s alias and packageAlias features. These features allow for some changes, but are quite limited. For anything more than that, the EventUpcaster is the ideal mechanism. You can do virtually anything in them, since you just modify the xml structure before XStream deserializes it.
Keep in mind that you can use the “eventRevision” attribute in the XML to easilly decide whether an upcaster should do anything. The default value is 0 (for the first revision of the event). You can set another value by calling setEventRevision(…) in your event’s constructor. This mechanism isn’t mandatory, but might be useful in many cases.