Jsonix xsi:type Support

by Alexey Valikov

HTML

<script src="https://rawgithub.com/highsource/jsonix/master/dist/Jsonix-all.js"></script>
<h1>Original XML</h1>
<pre id="original-xml"></pre>
<h1>Unmarshalled JSON</h1>
<pre id="json"></pre>
<h1>Marshalled XML</h1>
<pre id="marshalled-xml"></pre>

JavaScript

var Mappings = {
    n: 'Mappings',
    tis: [{
        ln: 'Expression'
    }, {
        ln: 'Literal',
        bti: '.Expression',
        ps: [{
            n: 'value',
            t: 'v'
        }]
    }, {
        ln: 'And',
        bti: '.Expression',
        ps: [{
            n: 'expressions',
            en: 'Expression',
            t: 'e',
            ti: '.Expression',
            col: true
        }]
    }],
    eis: [{
        en: 'Literal',
        ti: '.Literal'
    }, {
        en: 'Expression',
        ti: '.Expression'
    }, {
        en: 'And',
        ti: '.And'
    }]
};
var context = new Jsonix.Context([Mappings], {
    namespacePrefixes: {
        'http://www.w3.org/2001/XMLSchema-instance': 'xsi'
    }
});

var originalXML = '<Expression xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="And"><Expression xsi:type="Literal">a</Expression><Expression xsi:type="Literal">b</Expression></Expression>';
$('#original-xml').text(originalXML);

var unmarshaller = context.createUnmarshaller();
var json = unmarshaller.unmarshalString(originalXML);

var marshaller = context.createMarshaller();
var marshalledXML = marshaller.marshalString(json);
$('#json').text(window.JSON.stringify(json, null, 2));
$('#marshalled-xml').text(marshalledXML);

console.log(window);