The key difference is that there are no options when you parse json. You just parse it and get some lists and maps back.
In XML you have to decide if you want DTD or schema enabled (which could provide default values, and could be a security risk) and where abs how you resolve the DTDs from etc. Do you resolve references? And many option options.
So JSON benefits not just from a simpler structure, but also from less optionality.
You do not pull schemas dynamically. Schemalocation beyond editors is a pure theory thing. It is not default, it cannot be fast. Any serious developer has the schemas as files in their code when checking the data for compliance.
Basically, in a static typed language you decide for schema checking or not - like for Json -, serializing in structures or access in an API - like for Json.
It is just that JavaScript maps json directly in their dynamic object, array and native types. For xml that is an mismatch. For static languages both are an mismatch.
In XML you have to decide if you want DTD or schema enabled (which could provide default values, and could be a security risk) and where abs how you resolve the DTDs from etc. Do you resolve references? And many option options.
So JSON benefits not just from a simpler structure, but also from less optionality.