provide a bidirectionnal mapping between XML and JS data Structure (aka JSON)
npm install xml-mapping
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.
* Nicolas Thouvenin
* Joe Ibershoff
* Yura Zenevich
* Thorsten Lorenz
* ntgn81
* Rowell Cruz
* JT
* Bindu Wavell
* niederlec
With npm do:
$ npm install xml-mapping
javascript
var XMLMapping = require('xml-mapping');var json = XMLMapping.load('value ');
var xml = XMLMapping.dump(json);
console.log(xml,json);
console.log(json);
`Output:
value { key: { '$t': 'value' } }
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, Object options)
Transform a string with XML in Javascript data structure (JSON).
Return Object.###Options
Warning : options break the symmetry. This means that the JSON generated may not reproduce the same XML
throwErrors - boolean - Flag to throw errors of the SAX Parser ; default : false*
nested - boolean - Flag to ignore nested tags inside text : default : false*
specialChar - string - Set the first character of XML tag ($t, $text, $cd, $cdata, $e, $element, $c, $comment); default : $*
longTag - boolean - Use long names tags($text, $element, $cdata, $comment) rather than short names ($t, $cd, $e, $c); default : false*
comments - boolean - Flag to ignore comments, if false all the comments will be ignored : default : true*
parserInfos - boolean - Flag to add some attributes generated by the parser (order, line, column, name), if true informations are inserted in the attributes list of all tags : default : false*`javascript
var xml = 'Title is important ';
var json = XMLMapping.load(xml, { nested: true });
console.log(json);// Should output:
// { title : { $t : 'Title isimportant', strong: { '$t': 'important' }} }
`
arrays - array* - an array of basic XPath strings that specify XML nodes that should be array, even when there is only one such node.`javascript
var xml = 'value1 value3 ';
var json = XMLMapping.load(xml, {
arrays: [
'/key1',
'/key2/key3'
]
});
console.log(json);// Should output:
// (Note that value of key1 and key3 are arrays, as specified in options)
// {"key1":[{"$t":"value1"}],"key2":{"key3":[{"$t":"value3"}]}}
`
dump(Object json, Object options)
Transform a Javascript data structure (JSON) in XML string. Return String.###Options
Warning : options break the symmetry. This means that the XML generated may not reproduce the same JSON
indent - boolean - Flag to throw errors of the SAX Parser ; default : false*
header - boolean - Flag to add XML header; default : false*
version - string - Set version attribute of XML header (see header flag); default : 1.0*
encoding - string - Set encoding attribute of XML header (see header flag); default : UTF-8*
specialChar` - string - Set the first character of XML tag ($t, $text, $cd, $cdata, $e, $element, $c, $comment); default : $** https://github.com/estheban/node-json2xml
* https://github.com/buglabs/node-xml2json
