XML in theory is a great format for what it represents — a tree of heterogeneous typed simple key/value pairs.
The problem is almost no data that people want to actually represent has this form and every way people have tried to beat XML into representing other things (i.e. lists and dicts) is kludgy is awkward.