Fichier XML et PHP5

891 vues

Publié le

Présentation de la gestion de fichier XML avec PHP5

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

  • Soyez le premier à aimer ceci

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

Aucune remarque pour cette diapositive

Fichier XML et PHP5

  1. 1. Jean-Marie Renouard LightPath 2014©
  2. 2. Le logo PHP est du domaine public http://commons.wikimedia.org/wiki/File:PHP-logo.svg Ce document est licencié sous licence ◦Attribution-NonCommercial-ShareAlike ◦CC BY-NC-SA Plus de détails: http://creativecommons.org/licenses/by-nc-sa/3.0/fr/ LightPath 2014© - http://www.jmrenouard.fr 2
  3. 3. DOM: chargement et écriture DOM: validation XML /DTD DOM: validation XML schéma DOM: conversion en tableau DOM: recherche d’élément DOM: recherche XPATH SimpleXML: chargement et écriture SimpleXML : recherche d’élément LightPath 2014© - http://www.jmrenouard.fr 3
  4. 4. LightPath 2014© - http://www.jmrenouard.fr 4
  5. 5. DOM: Lecture et création d’un arbre syntaxique. Pas de lecture de flux Tout est lu puis analysé Facilite la manipulation Lent quand le fichier XML est important Consommation mémoire importante LightPath 2014© - http://www.jmrenouard.fr 5
  6. 6. Fichier XML exemple: ◦http://www.w3schools.com/XML/simple.xml Classe PHP: DOMDocument ◦http://php.net/manual/fr/class.domdocument.php Méthode load: ◦URL: http://.../.xml ◦Fichier Méthode loadXML et loadHTML: ◦Chaîne de caractère LightPath 2014© - http://www.jmrenouard.fr 6
  7. 7. <?php $dom = new DOMDocument(); $dom- >load('http://www.w3schools.com/XML/simple.xml'); $dom->load(‘/c/simple.xml'); $dom->getElementsByTagName(‘food'); $i++; foreach ($params as $param) { echo « * « .$param->nodeName. » = « .$param- >nodeValue; } ?> LightPath 2014© - http://www.jmrenouard.fr 7
  8. 8. <?php $dom = new DOMDocument(); $dom- >load('http://www.w3schools.com/XML/simple.xml'); //$dom->load(‘/c/simple.xml'); $params=$dom->getElementsByTagName(‘food'); foreach ($params as $param) { echo « * « .$param->nodeName. » = « .$param- >nodeValue; } ?> LightPath 2014© - http://www.jmrenouard.fr 8
  9. 9. Méthode: save() ◦Fichier à sauvegarder Méthodes: saveHTML() et saveXML() ◦Sauvegarde dans une chaîne de caractère LightPath 2014© - http://www.jmrenouard.fr 9
  10. 10. Validation du format XML Si DTD => Validation par DTD Méthode de DOMDocument ◦Validate() <?php $dom = new DOMDocument; $dom->Load('book.xml'); if ($dom->validate()) { echo "Ce document est valide !n"; } ?> LightPath 2014© - http://www.jmrenouard.fr 10
  11. 11. Définition en XML d'un contrat que doit respecter un document XML. Validation formelle de la structure Validation du format des données LightPath 2014© - http://www.jmrenouard.fr 11
  12. 12. Méthode de DOMDocument: schemaValidate() <?php $dom = new DOMDocument; $dom->Load('book.xml'); if ($dom- >schemaValidate(‘schema.xml’)) { echo "Ce document est valide XMLSchema !n"; } ?> LightPath 2014© - http://www.jmrenouard.fr 12
  13. 13. ll est possible de traduire une document XML en tableau PHP Facilite la lecture et la manipulation. Exemple: WC1/MyDOMDocument.php LightPath 2014© - http://www.jmrenouard.fr 13
  14. 14. DOMDocument :2 méthodes getElementById(): Trouve un élément par identifiant. ◦Renvoie un DOMElement getElementsByTagName(): Trouve une liste de noeud ◦Renvoie une DOMNodeList LightPath 2014© - http://www.jmrenouard.fr 14
  15. 15. Il s’agit d’un tag: DOMElement $domElement=new DOMElement(« food »); $domElement->tagName; $domElement->getAttribute(); $domElement->getElementsByTagName(‘..’); LightPath 2014© - http://www.jmrenouard.fr 15
  16. 16. $nodeList->length; DOMNode $node=$nodeList->item($i); $node->nodeName: nom du noeud $node->nodeValue: valeur du noeud $node->textContent: contenu du noeud LightPath 2014© - http://www.jmrenouard.fr 16
  17. 17. Moyen d'effectuer de la recherche dans des documents XML. Syntaxe riche Efficace et standardisé LightPath 2014© - http://www.jmrenouard.fr 17
  18. 18. Classe DOMXPath: 2 méthodes: ◦evaluate() : évaluation et comptage ◦query(): recherche des éléments LightPath 2014© - http://www.jmrenouard.fr 18
  19. 19. <?php $doc = new DOMDocument; $doc->load('book.xml'); $xpath = new DOMXPath($doc); $tbody = $doc- >getElementsByTagName('tbody')- >item(0); // notre requête est relative au noeud tbody $query = 'count(row/entry[. = "en"])'; $entries = $xpath- >evaluate($query, $tbody); echo "Il y a $entries livres anglaisn"; ?> LightPath 2014© - http://www.jmrenouard.fr 19
  20. 20. DOMXPtah->query renvoie un objet DOMNodeList <?php $doc = new DOMDocument; $doc->load('book.xml'); $xpath = new DOMXPath($doc); $query = '//book/title'; $entries = $xpath->query($query); foreach ($entries as $entry) { echo "Livre trouvé {$entry->nodeValue} n"; } ?> LightPath 2014© - http://www.jmrenouard.fr 20
  21. 21. LightPath 2014© - http://www.jmrenouard.fr 21
  22. 22. Plus simple que DOM Utilise la librairie libXML Plus rapide, plus simple LibXML: librairie XML de référence LightPath 2014© - http://www.jmrenouard.fr 22
  23. 23. simplexml_import_dom : ◦Conversion d’un DOMDocument en SimpleXMLElement simple_load_file: ◦Conversion un fichier XML en objet simplexml_load_string ◦Conversion d’une chaîne XML en objet LightPath 2014© - http://www.jmrenouard.fr 23
  24. 24. L’objet SimpleXMLElement ◦Méthode asXML($nomDeFichier) Extraction d’une chaîne de caractère XML file_put_contents pour écrire dans un fichier. LightPath 2014© - http://www.jmrenouard.fr 24
  25. 25. Expression XPath possible. Façon la plus rapide <?php $xml= simple_load_file(‘book.xml’); $result = $xml->xpath('/book/title'); while(list( , $node) = each($result)) { echo $node->asXML(); } ?> LightPath 2014© - http://www.jmrenouard.fr 25
  26. 26. nom : recherche de la balise nom /fils : recherche fils directs //noeud : recherche fils directs et indirects * : wildcard (//*) | : expression d’un Ou . : élément courant .. : élément parent @attr : recherche d’un élément avec attribut attr LightPath 2014© - http://www.jmrenouard.fr 26
  27. 27. @id=‘5’ : recherche d’un élément avec attribut id valant 5. Book[@id=‘5’] : recherche d’un élément book avec un attribut id valant 5 LightPath 2014© - http://www.jmrenouard.fr 27
  28. 28. LightPath: ◦Société de conseil et d’ingénierie ◦Formations, Conseil, Audit et mise en oeuvre ◦jmrenouard@lightpath.fr Jean-Marie RENOUARD ◦jmrenouard@gmail.com ◦Twitter: @jmrenouard ◦http://www.jmrenouard.fr LightPath 2014© - http://www.jmrenouard.fr 28

×