jxt
TypeScript icon, indicating that this package has built-in type declarations

4.0.2 • Public • Published

jxt - JSON/XML Translation for the Browser

What is this?

A basic framework for translating XML to dev-friendly JSON and back again, and can be used both in the browser and in node.

Installing

$ npm install jxt

How to use it

First, we define the mapping between our XML and desired JSON:

// Create a registry instance that will track our definitions and
// extensions.
var jxt = require('jxt').createRegistry();
var helpers = jxt.utils;
 
var Message = jxt.define({
    name: 'message',
    namespace: 'jabber:client',
    element: 'message',
    fields: {
        to: helpers.attribute('to'),
        from: helpers.attribute('from'),
        subject: helpers.textSub('jabber:client', 'subject'),
        body: helpers.textSub('jabber:client', 'body')
    }
});

Now, we can create Message objects, and set fields and treat it just like JSON, and it will map it to XML.

var msg = new Message();
msg.to = 'foo@example.com';
msg.body = 'giving a demo of jxt';
 
console.log(msg.toJSON());
console.log(msg.toString());
 
// {to: 'foo@example.com', body: 'giving a demo of jxt'}
// <message xmlns="jabber:client" to="foo@example.com"><body>giving a demo of jxt</body></message>

Mappings can be extended:

// jxt is our registry object
 
var Ext = jxt.define({
    name: 'demoExt',
    namespace: 'jxt',
    element: 'demo',
    fields: {
        text: jxt.text()
    }
});
 
jxt.extend(Message, Ext);
 
var msg = new Message();
msg.demoExt.text = 'an extension';
 
console.log(msg.toJSON());
console.log(msg.toString());
// {demoExt: {text: 'an extension'}}
// <message xmlns="jabber:client"><demo xmlns="jxt">an extension</demo></message>

Predefined Field Types

  • attribute
  • b64Text
  • boolAttribute
  • boolSub
  • boolSubAttribute
  • dateAttribute
  • dateSub
  • dateSubAttribute
  • enumSub
  • langAttribute
  • multiTextSub
  • numberAttribute
  • numberSub
  • numberSubAttribute
  • subAttribute
  • langTextSub
  • textSub
  • text

License

MIT

Created By

If you like this, follow @lancestout on twitter.

Versions

Current Tags

VersionDownloads (Last 7 Days)Tag
4.0.2159latest

Version History

VersionDownloads (Last 7 Days)Published
4.0.2159
4.0.10
4.0.00
3.1.0784
3.0.1032
3.0.90
3.0.80
3.0.70
3.0.64
3.0.52
3.0.40
3.0.30
3.0.20
3.0.11
3.0.00
2.7.00
2.6.40
2.6.30
2.6.20
2.6.10
2.6.00
2.5.40
2.5.30
2.5.20
2.5.10
2.5.00
2.4.00
2.3.00
2.2.00
2.1.00
2.0.20
1.6.10
1.6.00
1.5.10
1.5.00
1.4.02
1.3.20
1.3.10
1.3.00
1.2.10
1.2.00
1.1.00
1.0.10
1.0.00
0.7.00
0.6.00
0.5.10
0.5.00
0.4.00
0.3.30
0.3.20
0.3.10
0.3.00
0.2.100
0.2.90
0.2.81
0.2.70
0.2.60
0.2.50
0.2.40
0.2.21
0.2.10
0.2.00
0.1.10
0.1.00
0.0.70
0.0.60
0.0.50
0.0.40
0.0.30
0.0.20
0.0.10

Package Sidebar

Install

npm i jxt

Weekly Downloads

986

Version

4.0.2

License

MIT

Unpacked Size

82.5 kB

Total Files

20

Last publish

Collaborators

  • andyet-ops
  • lancestout