jxt

JSON/XML Translator. Set/retrieve data from XML just like working with a dictionary.

npm install jxt
1 downloads in the last day
127 downloads in the last week
562 downloads in the last month

jxt

JSON/XML Translation for the Browser

Build Status Dependency Status devDependency Status

Browser Support

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

Building bundled/minified version (for AMD, etc)

$ grunt

The bundled and minified files will be in the generated build directory.

How to use it

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

var jxt = require('jxt');

var Message = jxt.define({
    name: 'message',
    namespace: 'jabber:client',
    element: 'message',
    fields: {
        to: jxt.attribute('to'),
        from: jxt.attribute('from'),
        subject: jxt.subText('jabber:client', 'subject'),
        body: jxt.subText('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:

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
  • langAttribute
  • multiSubText
  • numberAttribute
  • numberSub
  • numberSubAttribute
  • subAttribute
  • subLangText
  • subText
  • text

License

MIT

Created By

If you like this, follow @lancestout on twitter.

npm loves you