Contenu connexe
Similaire à Fichier XML et PHP5 (20)
Plus de Jean-Marie Renouard (8)
Fichier XML et PHP5
- 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. 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
- 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. 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. <?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. <?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. 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. 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. 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. 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. 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. 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. Il s’agit d’un tag:
DOMElement $domElement=new DOMElement(« food »);
$domElement->tagName;
$domElement->getAttribute();
$domElement->getElementsByTagName(‘..’);
LightPath 2014© - http://www.jmrenouard.fr
15
- 17. Moyen d'effectuer de la recherche dans des documents XML.
Syntaxe riche
Efficace et standardisé
LightPath 2014© - http://www.jmrenouard.fr
17
- 18. Classe DOMXPath:
2 méthodes:
◦evaluate() : évaluation et comptage
◦query(): recherche des éléments
LightPath 2014© - http://www.jmrenouard.fr 18
- 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. 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
- 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. 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. 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. 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. 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. @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. 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