XML vs JSON

977 vues

Publié le

Rappel sur la structure et l'utilisation des formats de données XML et JSON.
Comparaison et utilisation dans PHP, Javascript, JQuery

Publié dans : Technologie
0 commentaire
0 j’aime
Statistiques
Remarques
  • Soyez le premier à commenter

  • Soyez le premier à aimer ceci

Aucun téléchargement
Vues
Nombre de vues
977
Sur SlideShare
0
Issues des intégrations
0
Intégrations
30
Actions
Partages
0
Téléchargements
68
Commentaires
0
J’aime
0
Intégrations 0
Aucune incorporation

Aucune remarque pour cette diapositive

XML vs JSON

  1. 1. XML et JSON Rappel
  2. 2. XML  XML est une notation  une manière d'écrire les informations  utilise des balises pour délimiter les informations  Techniquement HTML est XML  Données Hiérarchiques  Compréhensible par un humain et par un ordinateur  Un fichier XML est un fichier texte.  Utilisé pour Echanger les données  Supporte tous les alphabets du monde (UTF8) <BIBLIOTHEQUE> <ROMAN> <TITRE>Imajica</TITRE> <AUTEUR>Clive Barker</AUTEUR> <PRIX>6</PRIX> </ROMAN> <ROMAN> <TITRE>Dune</TITRE> <AUTEUR>Frank Herbert</AUTEUR> <PRIX>7</PRIX> </ROMAN> <MAGAZINE> <TITRE>Science et Vie</TITRE> <DATEPARUTION>2005-02-01</DATEPARUTION> </MAGAZINE> <ROMAN> <TITRE>Christine</TITRE> <AUTEUR>Stephen King</AUTEUR> <PRIX>5</PRIX> </ROMAN> </BIBLIOTHEQUE>
  3. 3. XML est partout  XHTML, HTML5  OpenOffice, Microsoft Office Open XML (docx, xlsx, pptx = dossier zip avec xml + img)  Format graphique : SVG  Les Flux de news : RSS  Les WebServices : XML-RPC et SOAP  JAVA (persistance, hibernate ..), .Net (xaml, dataset …), C++ …  MAthML (échange formule), SMIL(présentation multimédia), UBL Rosetta.Net (Universal Business Language : commandes, factures, devis ..) …  Et bien d’autres …
  4. 4. XML et pas seulement XML  DTD : DocType (valider)  XSD : schema (valider)  XSLT : style (transformer)  Xpath, XQuery , XPointer : trouver, extraire , requêter  SAX : parseur événementiel (java, c++, perl, php …)  DOM : parseur orientés hiérarchie (JavaScript, java, c++ …)
  5. 5. Les défauts  Il faut définir le format et les méthodes de sérialisation déSérialisation  Complexité à utiliser le DOM pour traverser ou générer les données  Le format est verbeux et prend beaucoup d'espace.
  6. 6. JS N  JavaScript Object Notation  Objet javascript sous forme de texte ou dans un fichier.  Format récursif  Fait parti de javascript => facile à utiliser  Compatible php : json_encode objet php => objet JSON  N’est pas natif en XHTTPRequest : jdoc = eval('(' + xhr.responseText + ')'); JSON.parse(xhr.responseText)  JQuery compense cela en l’implémentant dataType: "json"
  7. 7. XML <?xml version="1.0" encoding="utf-8"?> <person> <name>Sekaijin</name> <bdate>1964/03/13</bdate> <contry>France</contry> </person>  Verbale => taille  Api pour le parsing  Définition du format JSON { "name":"Sekaijin", "bdate":"1964/03/13", "contry":"France“ }  Aucun validateur  Pas de namespace  N’est pas extensible
  8. 8. Fonction php json_encode JSON  ["Apple","Banana","Pear"]  {"4":"four","8":"eight"}  {"apples":true,"bananas":null}  Var user={ "nom":"foo", "prenom":"bar" };  User.nom PHP  array("Apple", "Banana", "Pear")  array(4 => "four", 8 => "eight")  array("apples" => true, "bananas" => null)  class User { public $nom = ""; public $prenom = ""; public $naissance = ""; } $user = new User(); $user->nom = "foo"; $user->prenom = "bar";
  9. 9. Générer du JSON (php) I- si un seul enregistrement (objet): $enregistrement=$req->fetch(PDO::FETCH_OBJ); Ou $enregistrement=mysql_fetch_object($req); II- si un ensemble d’enregistrements (liste): while($liste[]=$req->fetch(PDO::FETCH_OBJ)); Ou while($liste[]=mysql_fetch_object($req)); Note: se débarasser de l’enregistrement vide avec array_pop($liste); III- Envoyer le resultat : header("Content_Type: text/json"); echo json_encode($objetPHP); //où objetPHP correspond à enregistrement ou liste
  10. 10. Lire JSON  JSON est un objet javascript • Objet.champs • Objet.sousObjet.champs • Objet[indice] • Objet[indice].champs • …  Astuce : pour remplacer le manque de la boucle foreach en javascript utiliser la focntion jquery: $.each(liste,function(indice,ligne){//todo})
  11. 11. Merci naydnabil@gmail.com

×