* attributes v. tagnames
* no "anonymous list"
* infinitely large surface area
[ {name: joe, age: 12 }, {name: bob, age: 23} ]
<list><user><name>joe</name><age>12</age></user><user><name>bob</name><age>23</age></user></list>
The access pattern for json is much easier: obj[1].name
The infinitely large surface area of XML is painful.
Namespaces, entities, xsd/schema, cdata, cdata-in-cdata.
It's an alright data / interchange format and especially suited to certain multi-vendor use cases, but the disadvantages cost more than the benefits compared to "simple" anonymous json.