Jean-Marie Renouard 
LightPath 2014©
Le logo PHP est du domaine public 
http://commons.wikimedia.org/wiki/File:PHP-logo.svg 
Ce document est licencié sous l...
DOM: chargement et écriture 
DOM: validation XML /DTD 
DOM: validation XML schéma 
DOM: conversion en tableau 
DOM: r...
LightPath 2014© - http://www.jmrenouard.fr 4
DOM: Lecture et création d’un arbre syntaxique. 
Pas de lecture de flux 
Tout est lu puis analysé 
Facilite la manipul...
Fichier XML exemple: 
◦http://www.w3schools.com/XML/simple.xml 
Classe PHP: DOMDocument 
◦http://php.net/manual/fr/class...
<?php 
$dom = new DOMDocument(); 
$dom- >load('http://www.w3schools.com/XML/simple.xml'); 
$dom->load(‘/c/simple.xml'); 
$...
<?php 
$dom = new DOMDocument(); 
$dom- >load('http://www.w3schools.com/XML/simple.xml'); 
//$dom->load(‘/c/simple.xml'); ...
Méthode: save() 
◦Fichier à sauvegarder 
Méthodes: saveHTML() et saveXML() 
◦Sauvegarde dans une chaîne de caractère 
Li...
Validation du format XML 
Si DTD => Validation par DTD 
Méthode de DOMDocument 
◦Validate() 
<?php $dom = new DOMDocume...
Définition en XML d'un contrat que doit respecter un document XML. 
Validation formelle de la structure 
Validation du ...
Méthode de DOMDocument: schemaValidate() 
<?php $dom = new DOMDocument; $dom->Load('book.xml'); if ($dom- >schemaValidate...
ll est possible de traduire une document XML en tableau PHP 
Facilite la lecture et la manipulation. 
Exemple: WC1/MyDO...
DOMDocument :2 méthodes 
getElementById(): Trouve un élément par identifiant. 
◦Renvoie un DOMElement 
getElementsByTag...
Il s’agit d’un tag: 
DOMElement $domElement=new DOMElement(« food »); 
$domElement->tagName; 
$domElement->getAttribut...
$nodeList->length; 
DOMNode $node=$nodeList->item($i); 
$node->nodeName: nom du noeud 
$node->nodeValue: valeur du noe...
Moyen d'effectuer de la recherche dans des documents XML. 
Syntaxe riche 
Efficace et standardisé 
LightPath 2014© - ht...
Classe DOMXPath: 
2 méthodes: 
◦evaluate() : évaluation et comptage 
◦query(): recherche des éléments 
LightPath 2014© -...
<?php $doc = new DOMDocument; $doc->load('book.xml'); $xpath = new DOMXPath($doc); $tbody = $doc- >getElementsByTagName('t...
DOMXPtah->query renvoie un objet DOMNodeList 
<?php $doc = new DOMDocument; $doc->load('book.xml'); $xpath = new DOMXPath(...
LightPath 2014© - http://www.jmrenouard.fr 
21
Plus simple que DOM 
Utilise la librairie libXML 
Plus rapide, plus simple 
LibXML: librairie XML de référence 
LightP...
simplexml_import_dom : 
◦Conversion d’un DOMDocument en SimpleXMLElement 
simple_load_file: 
◦Conversion un fichier XML ...
L’objet SimpleXMLElement 
◦Méthode asXML($nomDeFichier) 
Extraction d’une chaîne de caractère XML 
file_put_contents po...
Expression XPath possible. 
Façon la plus rapide 
<?php 
$xml= simple_load_file(‘book.xml’); 
$result = $xml->xpath('/bo...
nom : recherche de la balise nom 
/fils : recherche fils directs 
//noeud : recherche fils directs et indirects 
* : w...
@id=‘5’ : recherche d’un élément avec attribut id valant 5. 
Book[@id=‘5’] : recherche d’un élément book avec un attribut...
LightPath: 
◦Société de conseil et d’ingénierie 
◦Formations, Conseil, Audit et mise en oeuvre 
◦jmrenouard@lightpath.fr ...
Prochain SlideShare
Chargement dans…5
×

Fichier XML et PHP5

957 vues

Publié le

Présentation de la gestion de fichier XML avec PHP5

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

Aucun téléchargement
Vues
Nombre de vues
957
Sur SlideShare
0
Issues des intégrations
0
Intégrations
166
Actions
Partages
0
Téléchargements
28
Commentaires
0
J’aime
1
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

×