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);