XML has the advantage that it is a well-structured format which is both machine-readable and human readable.
But what makes it bad for use in game protocols is that it contains a lot of boilerplate. It will use a large number of bytes to encode relatively little information. Especially considering that game protocols usually consist of mostly numbers being passed around, which XML encodes in ASCII digits.
Which is why most games use binary protocols. That allows to squeeze a lot more information into the same numbers of bytes.
But while binary protocols are efficient, they also have their drawbacks during development. When the meaning of a byte depends on its position in a message, then a small bug can screw up the alignment of all following bytes, make the receiver interpret it completely wrong and cause very weird bugs. Such errors are hard to troubleshoot, because binary messages are difficult to read for human developers. And it is pretty easy to create such bugs, because serialization and deserialization will usually have to be completely self-developed code, and not use a library.
A compromise between the readability and structure of XML and the conciseness of binary protocols can be JSON, by the way. It still encodes everything in ASCII, but it has a lot less boilerplate than XML. It also writes out the key for every value (like XML), which makes it fail more gracefully when there is a bug in the serialization / deserialization.