JSON ou XML, quel format choisir?

Par cette comparaison de JSON et XML, nous allons tenter, en mettant en lumière les forces et faiblesses de chaque format, de vous aider à choisir celui qui convient le mieux pour une application donnée, et plus spécialement pour une application Ajax/HTML 5.

JSON

JSON est un format récursif compatible avec JavaScript qui en fait a la structure d'un objet JavaScript. C'est un objet sauvegardé dans un fichier. Il date de 2002 et soudain est devenu populaire lorsqu'Ajax à commencé à être largement utilisé. On peut stocker des fichiers JSON dans une base de donnée PostgreSQL, et il existe un standard W3C pour représenter les données de formulaire en JSON, entre autres applications.

JSON présuppose que vous connaissiez la structure du document. Lorsqu'on l'utilise avec tout langage de programmation, on accède aux données selon la structure d'un objet.

1) JSON et JavaScript

JSON est très facile à utiliser en JavaScript, il fait partie du langage.

Pour utiliser un fichier JSON, il vous faut juste charger le fichier en tant que texte, c'est le contenu de l'attribut Ajax responseText.
Ensuite vous sous servez de la fonction JavaScript eval() pour en faire un objet JavaScript:

var doc = xhr.responseText;
var jdoc = eval('(' + doc + ')');

ou avec un navigateur récent:

var jdoc = JSON.parse(doc);

Une fois le fichier parsé, il s'utilise comme tout objet JavaScript:

var value = jdoc.commands[0].value;
var action = jdoc.commands[0].action;

De nombreux scripts sont disponibles sur le Web pour sérialiser un objet JavaScript en fichier JSON. Avec un navigateur récent, on convertit l'objet en chaîne:

var str = JSON.stringify(jdoc);

2) JSON et PHP

Vous pouvez utiliser JSON en PHP une fois le fichier parsé avec un parseur PHP. Il existe une bibliothèque JSON pour PHP, il suffit de configurer php.ini pour l'utiliser. Il y a aussi une bibliothèque json.php à inclure directement avec la fonction "require".

3) Service Web

Le framework JSON Web Service library est très populaire.

4) Transformations

La transformation d'un format à l'autre peut être accomplie en sérialisant l'objet en mémoire dans un nouveau format.

5) Base de données

JSON est un type de données pour PostgreSQL.

6) Exemple de fichier JSON

[ { 
"menu": "File", 
"commands": [ 
 {
    "value": "New", 
    "action":"CreateDoc"     
 },
 {
    "value": "Open", 
    "action": "OpenDoc" 
}, 
{ 
    "value": "Close", 
    "action":  "CloseDoc"
 } ]
 } ] 

XML

XML est un langage à balises qui est la base de nombreux formats et langages d'interface: RSS, SVG, OPML, XHTML, Open XML, XAML, etc. Il permet de décrire et analyser toutes sortes de documents, sauf binaires, et de les conserver dans un fichier.
Il est plus verbeux que JSON, mais une quantité d'outils existent pour le traiter, et c'est aussi le format de fichier de traitements de texte et autres logiciels de bureau.
La structure de XML est libre. Tout contenu textuel se représente en XML et on y accède par l'identifieur ou le nom de balise. Mais le format prend beaucoup d'espace.

L'utilisation des méthodes de DOM est quelquefois laborieuse avec XML et lente avec XHTML.

1) XML et JavaScript

Au contraire de JSON, le fichier est chargé en Ajax directement comme document XML, c'est l'attribut responseXML d'Ajax.
Puis le contenu peut être accédé par les méthodes de DOM.

var xdoc = xhr.responseXML;
var x = xdoc.getElementById("mabalise");

2) XML et PHP

XML fait partie du langage de base PHP 5, il y est utilisé directement avec les classes DOMDocument et SimpleXML. On peut charger un fichier XML, traiter le contenu avec les méthodes de DOM et le sauver directement dans un fichier.

3) Service Web

Il y a un format XML pour les services Web: SOAP. C'est une standard du W3C, mais plutôt compliqué et pas très populaire.

4) Transformations

La transformation d'un document XML en un autre format peut être accomplie par XSLT, un outil d'un usage pas très simple. Bien sûr, on peut aussi en PHP ou JavaScript, charger le fichier XML, prendre les données, et construire un fichier dans le nouveau format, quelquefois c'est plus facile.

5) Base de données

La combinaison de XML et XPath permet de l'utiliser comme base de données, il convient donc pour des ressources de taille importante.

6) Exemple de fichier XML

<?xml version="1.0" ?>
<menubar>
   <menu name="File">
      <command value="New" action="CreateDoc" />
      <command value="Open" action="OpenDoc" />    
      <command value="Close" action="CloseDoc" />
   </menu>
</menubar>

Il existe une grande liberté dans la façon de représenter les données:

<command>
    <value>New</value>
    <action>CreateDoc</action>
</command> 

Conclusion

JSON est plus simple pour retirer des données sur le serveur, et les utiliser, c'est comme une mémoire permanente pour un programme. Il vous faut connaître la structure des données pour l'utiliser, de préférence vous devez être le propriétaire du fichier. Il est plus léger que XML et économise les ressources.

XML convient mieux dans un but de présentation. C'est le langage de nombreuses interfaces graphique maintenant: XAML, XUL, MXLM, etc, tandis que QML est proche de JSON. Dans le premier cas, les données sont stockées sous une forme et utilisées sous une autre.
Vous pouvez utiliser XML en provenance de sources externes et même créer des bases de données XML.