I suspect the reasons that XML ultimately lost are:
1. You could represent it as a nested structure of your language's standard lists & maps, which you already know the API of, which you could directly operate on. For dynamic languages, this is much faster to stick a prototype together, even if it bites you in the ass eventually. But by the stage, you've already chosen JSON.
2. It was less characters to manually type.
3. Particular uses of XML were extremely verbose. The S in SOAP stood for Simple, which looks ironic in retrospect.
4. In a time when payloads didn't routinely use compression, the closing tags could be a noticeable increase in size.
5. The vast majority of communication that now uses JSON didn't benefit significantly from XPath (people prefer to navigate data structures using their language features, not a generic API), namespaces, DTDs, XML Schema etc.
In about that order.
You could argue that much of this is superficial, and it is, but the industry has shown time and again that lowering the barrier to entry, even in ways that make little difference in the long run, usually wins out.