&gt; <i>XML&#x27;s saving grace was that it came with good schemas out of the box, so turning something from XML to, say, a Java object, was not very difficult.</i><p>Huh? How do you know what types &lt;a&gt;&lt;b c=&quot;d&quot;&gt;&lt;e&#x2F;&gt;&lt;&#x2F;b&gt;&lt;b f=&quot;g&quot; &#x2F;&gt;&lt;a&gt; has?  How do you transform that into a Java object?  For that matter, if you manage to turn this into a Java object, how do you know how to transform it back into XML?  What members turn into attributes and which turn into sub-elements?<p>Or are you referring to XSD, which showed up years later, is not required, and often not used?  Yes, XSD grafts typing onto XML quite effectively, but this is a bolt-on just like the JSON approaches. It just turned out to be a widely-adopted bolt-on.