The root element will be absorbed, i.e. <root>text</root> becomes "text".
Child elements with the same name are added to an array.
If an element has attribute and text content, the text content becomes a property, e.g. '#text': 'my text'.
In mixed content nodes, text nodes will be dropped.
An empty element becomes 'null', i.e. <e/> becomes {"e": null}.
An element with a single text child becomes a property with the value of the text child, i.e. <e>text</e> becomes {"e": "text"}
If the attribute json:literal="true" is present on an element, then its text value is considered literal and not quoted as a string. Useful for boolean and numberic values!