> Simple structure, a little too verbose

The "too verbose" bit is overly broad cargo-cultism.

XML has valid, efficient applications. A prominent one: it's a more concise serialization format than JSON (the supposed alternative) for describing self-similar typed hierarchies, e.g. scene graphs or other UI trees. (see HTML, XAML, VRML, kind-of JSX.)

consider:

  
Hello world
vs:

  {
    nodeType: "div",  
    children: [
      {
        nodeType: "span", 
        children: [
          {
            nodeType: "text", 
            value: "Hello world" 
          } 
        ] 
      } 
    ] 
  }
It's hard to take the rest of the article seriously when it starts with that unnecessary (and imprecise) jab at the technology it purports to be educating about.

There are more concise ways to use JSON. For example:

["div", ["span", "Hello world"]]

You can also add attributes:

["div", {"id": 123}, ["span", "Hello world"]]

Parsing is a bit trickier and the format is less obviously extensible, but in general, JSON arrays are more concise than JSON objects since you can leave out the field names.

Just wanted to add that this use might not be common in JSON but is extremely common in S-Expressions, which predate XML by 40 years or so, and are probably a better XML replacement than JSON (if you only regard technical details and ignore popularity and library/language support)

When people say this I wonder how much lisp readers are really standardized. (Consider reader macros.) It's not clear I could find an s-expression parser in two different arbitrary languages and be sure they interoperate, even if they're both lisp variants.

I guess that's the problem edn [0] was trying to solve, but it doesn't have wide enough adoption.

[0] https://github.com/edn-format/edn