Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Fichier XML et PHP5

1,191 views

Published on

Présentation de la gestion de fichier XML avec PHP5

Published in: Engineering
  • Be the first to comment

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

×