JSPM

  • Created
  • Published
  • Downloads 1149
  • Score
    100M100P100Q103693F
  • License MIT

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

Package Exports

  • jxt

This package does not declare an exports field, so the exports above have been automatically detected and optimized by JSPM instead. If any package subpath is missing, it is recommended to post an issue to the original package (jxt) to support the "exports" field. If that is not possible, create a JSPM override to customize the exports field for this package.

Readme

jxt - JSON/XML Translation for the Browser

Version Downloads Build Status Dependency 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)

$ make build

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:

// 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.subText('jabber:client', 'subject'),
        body: helpers.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:

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

License

MIT

Created By

If you like this, follow @lancestout on twitter.