12-20 против 30-40? это говорит о том, что при создании авторы не думали и в результате, структура была больше данных и съедала больше половины общего объема. У xml излишество только из-за наличиая названия нода в закрывающем теге. Типа personAddressStreet или personPhoneNumber, или избыточное число нодов, вместо атрибутов. Во многих случаях закрывающий нод компактен.
Сравните

Код:
<canvas>
<x>0</x>
<y>0</y>
<w>1</w>
<h>1</h>
</canvas>
(63 байта в этом виде, 49 байтов без переносов и табуляций)
с

Код:
<canvas x="0" y="0" w="1" h="1" />
(34 байта)
Причем это пример одинаков по размеру с json

Код:
"canvas":{"x":0,"y":0,"w":1,"h":1}