I would actually question the effectiveness of using XML or JSON over HTTP as an RPC mechanism. In my experience I get much better performance rolling my own protocol with sockets.
Performance isn't everything. The protocol performance is usually dwarfed by application performance. Using standard data formats over HTTP has some huge advantages: all the pre-existing tools work. For example, you can test your services from the command line using curl, and use other existing tools to parse the data. Debugging a custom protocol and data format over raw sockets is much more difficult. You also get all the existing servers, load balancers, caches, clients, security tools, etc.