diff --git a/package.json b/package.json index 58e4b4e..f25f3c9 100644 --- a/package.json +++ b/package.json @@ -6,7 +6,8 @@ "bin": { "xml2json": "bin.js" }, "preferGlobal": true, "dependencies": { - "xml-mapping": "1.0.x" + "xml-mapping": "1.0.x", + "optimist": "0.6.x" }, "devDependencies": {}, "scripts": { diff --git a/xml2json.js b/xml2json.js index 00c2cb4..cea3e16 100644 --- a/xml2json.js +++ b/xml2json.js @@ -1,7 +1,19 @@ /*jshint node:true */ "use strict"; -var xm = require('xml-mapping'); +var xm = require('xml-mapping'), + optimist = require('optimist'), + argv = optimist + .options('help',{alias:'h', describe: 'Show help'}) + .options('caproot',{alias:'c',describe:'no root elem in JSON (if just one)'}) + .usage('Reads standard input and writes to standard output.\nUsage : $0 [--help] [--caproot]') + .argv; + + +if ( argv.help ){ + optimist.showHelp(); + process.exit(0); +} process.stdin.resume(); process.stdin.setEncoding('utf8'); @@ -13,5 +25,11 @@ process.stdin.on('data', function (chunk) { process.stdin.on('end', function() { var json = xm.load(xml); + + if(argv.caproot && Object.keys(json).length===1){ + json = json[Object.keys(json)[0]]; + } console.log(JSON.stringify(json, null, '\t')); }); + +