18 févr. 2016

[JAVASCRIPT] XML <->JSON (xml2json)

L'outils XML2JSON permet de convertir des fichier XML en JSON ce qui peut être pratique dans
certains cas de figures.
English Title: "How to convert  XML to JSON and JSON to XML in CLI"

les sources de xml2json https://www.npmjs.com/package/xml2json

Installation

$ npm install xml2json
npm http GET https://registry.npmjs.org/xml2json
npm http 200 https://registry.npmjs.org/xml2json
npm http GET https://registry.npmjs.org/xml2json/-/xml2json-0.9.0.tgz
npm http 200 https://registry.npmjs.org/xml2json/-/xml2json-0.9.0.tgz
[...]

Un répertoire nommé "node_modules" se créé là où vous avez exécuter la commande

Utiliser xml2json pour transformer du xml en json

Tout d'abord localisons xml2json: Il se trouve dans node_modules/bin et taper la commande sous la forme suivante:

$ cat monfichier.xml  | /home/stan/node_modules/xml2json/bin/xml2json > monfichier.json

Le fichier JSON est alors généré

On peut alors utiliser jq (https://stedolan.github.io/jq/tutorial/) pour bien formater le JSON.

Utiliser xml2json pour transformer du json en xml

Là ça se complique ! il y a bien un json2xml, mais pas de binaire pour l’exécuter, juste des libs
Je les ai quand même installées:

Installation
# npm install xml2json
Ensuite aller dans ~/node_modules/xml2json/bin/ (oui je dis bien dans xml2json et pas json2xml)

et créer le fichier json2xml

$ vim json2xml
Contenu du fichier:
#!/usr/bin/env node

var json2xml = require('../');
var pkg = require('../package.json');

var json = '';

var args = process.argv.slice(2)
var arg = args[0]

if (arg == '--version') {
        console.log(pkg.version)
        process.exit(0)
}

process.stdin.on('data', function (data) {
        json += data;
});

process.stdin.resume();

process.stdin.on('end', function () {
        xml = json2xml.toXml(json)
        process.stdout.write(xml + '\n')
});
Enregistrer et quitter, puis rendez le exécutable:

$ chmod +x json2xml
puis l'executer:
$ cat $JSONFILE | /opt/tools/node_modules/xml2json/bin/json2xml > $XMLFILE

 Et voilà

Aucun commentaire:

Enregistrer un commentaire