XML Methodology

The following examples show how different data types are represented in XML. They mirror how the data structures are represented in JSON.

##### Simple types

The representation of loose (not a direct bean property value) simple types are shown below:

Data type | JSON example | XML
--- | --- | ---
string | 'foo' | <string>foo</string>
boolean | true | <boolean>true</boolean>
integer | 123 | <number>123</number>
float | 1.23 | <number>1.23</number>
null | null | <null/>

##### Maps

Loose maps and beans use the element <object> for encapsulation.

_type attributes are added to bean properties or map entries if the type cannot be inferred through reflection (e.g. an `Object` or superclass/interface value type).

Data type | JSON example | XML
--- | --- | ---
Map<String,String> | { k1: 'v1' k2: null } | <object> <k1>v1</k1> <k2 _type='null'/> </object>
Map<String,Number> | { k1: 123, k2: 1.23, k3: null } | <object> <k1>123</k1> <k2>1.23</k2> <k3 _type='null'/> </object>
Map<String,Object> | { k1: 'v1' k2: 123, k3: 1.23, k4: true, k5: null } | <object> <k1>v1</k1> <k2 _type='number'>123</k2> <k3 _type='number'>1.23</k3> <k4 _type='boolean'>true</k4> <k5 _type='null'/> </object>

##### Arrays

Loose collections and arrays use the element <array> for encapsulation.

Data type | JSON example | XML
--- | --- | ---
String[] | [ 'foo' null ] | <array> <string>foo</string> <null/> </array>
Number[] | [ 123, 1.23, null ] | <array> <number>123</number> <number>1.23</number> <null/> </array>
Object[] | [ 'foo', 123, 1.23, true, null ] | <array> <string>foo</string> <number>123</number> <number>1.23</number> <boolean>true</boolean> <null/> </array>
String[][] | [ ['foo', null], null, ] | <array> <array> <string>foo</string> <null/> </array> <null/> </array>
int[] | [ 123 ] | <array> <number>123</number> </array>
boolean[] | [ true ] | <array> <boolean>true</boolean> </array>
List<String> | [ 'foo' null ] | <array> <string>foo</string> <null/> </array>
List<Number> | [ 123, 1.23, null ] | <array> <number>123</number> <number>1.23</number> <null/> </array>
List<Object> | [ 'foo', 123, 1.23, true, null ] | <array> <string>foo</string> <number>123</number> <number>1.23</number> <boolean>true</boolean> <null/> </array>

##### Beans

Data type | JSON example | XML
--- | --- | ---
class MyBean { public String a; public int b; public Object c; // String value public Object d; // Integer value public MyBean2 e; public String[] f; public int[] g; } class MyBean2 { String h; } | { a: 'foo', b: 123, c: 'bar', d: 456, e: { h: 'baz' } f: ['qux'] g: [789] } | <object> <a>foo</a> <b>123</b> <c>bar</c> <d _type='number'>456</d> <e> <h>baz</h> </e> <f> <string>qux</string> </f> <g> <number>789</number> </g> </object>

##### Beans with Map properties

Data type | JSON example | XML
--- | --- | ---
class MyBean { public Map<String,String> a; public Map<String,Number> b; public Map<String,Object> c; } | { a: { k1: 'foo' }, b: { k2: 123 }, c: { k3: 'bar', k4: 456, k5: true, k6: null } } | <object> <a> <k1>foo</k1> </a> <b> <k2>123</k2> </b> <c> <k3>bar</k3> <k4 _type='number'>456</k4> <k5 _type='boolean'>true</k5> <k6 _type='null'/> </c> </object>