Node Module to convert Memory structure to XML and vice versa
JavaScript Shell
Pull request Compare This branch is 6 commits ahead, 52 commits behind Inist-CNRS:master.
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Failed to load latest commit information.
examples
lib
test
.gitignore
.travis.yml
LICENSE
README.md
index.js
package.json

README.md

xml2json and json2xml for NodeJS

It's native javascript implementation of a bidirectional converter between XML and JS data structure (aka JSON). You can convert any type of XML documents in an Javascript data structure. You can also do the reverse, converting a Javascript data structure in XML String. XML is still valid.

This is a fork of https://github.com/lindory-project/node-xml-mapping with improvements made to allow optional throwing of parser errors rather than the default of tossing them away.

Installation

With npm do:

$ npm install git+https://github.com/zacronos/node-xml-mapping.git

Usage

var xm = require('xml-mapping');

// will not throw errors -- ignores them instead
var json = xm.load('<key>value</key>');
var xml  = xm.dump(json);

console.log(xml);
console.log(json);

try {
    // throws parsing errors with line and column numbers
    json = xm.load('<key>value', {throwErrors: true});
} catch (err) {
    console.log(err.toString())
}

Output:

<key>value</key>
{ key: { '$t': 'value' } }
Error: Unexpected end of input
Line: 0
Column: 10
Char: null

Convention

The rules for converting XML to JSON are those used by Google in its GData protocol. More information here : http://code.google.com/apis/gdata/docs/json.html

Tests

Use nodeunit to run the tests.

$ npm install nodeunit
$ nodeunit test

API Documentation

load(String xml)

Transform a string with XML in Javascript data structure (JSON). Return Object.

dump(Object json)

Transform a Javascript data structure (JSON) in XML string. Return String.

tojson(String xml)

Alias of load.

toxml(Object json)

Alias of dump.

Also

License

MIT/X11

TODO:

  • It would be nice allow passthrough of other options to SAX and XMLWriter.
  • The code could be more efficient by instantiating a single parser/writer and allowing it to be reused, rather than always starting from scratch.
  • It would be nice to expose SAX's incremental parsing / data buffering mechanism.
  • The existing code is not reversible for html-escaped characters; this should be fixed, though the issue may lie in the underlying XMLWriter code.