As far as preserving semantics, I prefer Cameron Adams' WidgEditor:

http://www.themaninblue.com/experiment/widgEditor/