Académique Documents
Professionnel Documents
Culture Documents
1
Introduction
XML est maintenant une norme largement acceptée et utilisée par un ensemble de
règles pour coder des documents sous une forme lisible par machine.
Le support XML a été pris plus au sérieux dans PHP 5 (2004) que dans PHP 4 (2000) et
PHP 3 (1998).
Dans cette présentation, nous allons nous concentrer sur le support XML en PHP 5 - la
2
PHP
HyperText Préprocesseur, un langage de script couramment utilisé côté serveur et
pouvant être intégré au format HTML. Il a été conçu à l’origine pour produire des
Mais PHP peut maintenant créer une grande variété d’applications complexes de
Remarque: le nom PHP est dérivé des outils de la page d'accueil personnelle ou de
3
Historique de PHP prenant en
charge XML
PHP 3 – SAX (Simple API for XML) parseur (analyseur XML)
4
SimpleXML
5
SimpleXML
SimpleXML est une extension de PHP5 permettantde manipuler simplement des documents
XML
SimpleXML permet:
- La lecture d’un fichier XML
C'est un moyen facile d'obtenir les attributs et le contenu textuel d'un élément XML
SimpleXML prend seulement quelques lignes de code pour lire les données texte d'un
7
PHP SimpleXML : fonctions
SimpleXML Functions:
DOM.
8
PHP SimpleXML : fonctions
SimpleXMLElement Class:
element
un élément SimpleXML
9
PHP SimpleXML : fonctions
SimpleXMLElement Class:
10
PHP SimpleXML : Accès au éléments
En PHP, l'opérateur -> est utilisé pour référencer un objet à ses propriétés. L'opérateur équivalent en
Java est "." (point) et dans XPath est "/". Dans une arborescence d'objets XML, chaque élément est une
propriété de son parent.
Si $x est un élément
$x->getName() est le nom de l'élément - sa balise
$x->y est la séquence de y enfants
$x->y[0] c’est le premier fils y
foreach ($x->y as $y) {.. } itère sur les y enfants
$x->children() Est la sequence de tous les enfants de $x
$x->xpath(...) évaluer une expression Xpath
$x->attributes() Est la sequence de tous les attributs de x
$x->attributes()->z c’est l’attribut z de l’élément x
foreach ($x->attributes() as $att {.. } itère sur les attributs de l’élément $x
11
Lecture d’un fichier XML
Accès au contenu d’un fichier XML à l’aide de la fonction simplexml_load_file:
Exemple
$xml=simplexml_load_file("biblio.xml");
12
Lecture d’un fichier XML
1. simplexml_load_file
<?xml version="1.0" encoding="UTF-8"?>
<?php <biblio>
<livre editeur= "FAYARD " prix= "20.00 ">
$xml = simplexml_load_file( "biblio.xml");
<titre>L'empire de la honte </titre>
echo $xml->livre[0]->titre , "<br>";
<auteur>Jean Ziegler</auteur>
echo $xml->livre[0]->auteur , "<br>"; <date>2005</date>
13
Lecture d’un fichier XML
2. simplexml_load_string <?php
$xmlstr = <<<XML
<?php
<?xml version="1.0" encoding="UTF-8"?>
include 'biblio.php'; <biblio>
$biblio = new SimpleXMLElement($xmlstr); <livre editeur= "FAYARD " prix= "20.00 ">
<titre>L'empire de la honte </titre>
echo $biblio->livre[0]->titre , "<br>";
<auteur>Jean Ziegler</auteur>
echo $biblio->livre[0]->auteur , "<br>"; <date>2005</date>
echo $biblio->livre[0]->date , "<br>"; </livre>
<livre editeur= "GALLIMARD " prix= "18.00 ">
?> test2.php
<titre> Ritournelle de la faim </titre> …. </livre>
</biblio>
XML;
Resultat
?> biblio.php
14
Lecture des éléments
3. simplexml_load_string & foreach
<?php
include 'biblio.php' ;
$biblio = new SimpleXMLElement($xmlstr);
//Lecture du contenu des éléments
$i=1;
foreach ($biblio->livre as $livre){
echo "livre $i "; Resultat
echo $livre->titre, ' de ' , $livre->auteur, ' paru en ' , $livre-
>date , '<hr/>';
$i++;
}
?> lirexml.php
15
Lecture des attributs
4. SimpleXMLElement::attributes
Accès aux attributs d’un fichier XML à l’aide de la fonction attributes ():
<?php
include 'biblio.php';
$biblio = new SimpleXMLElement($xmlstr);
foreach ($biblio->livre as $val){
echo '<h3>', $val->titre, ' de ' , $val->auteur, '</h3>', ' <b>
paru en ' , $val->date , ' </b>';
foreach ($val->attributes() as $att => $valatt) {
echo "<b> $att : $valatt </b>";
} Resultat
echo "<hr/>";
} ?> lirexmlatt.php
16
Lecture d’un fichier structure complexe
5. SimpleXMLElement::children
<?php
include 'biblio.php';
foreach($biblio->children() as $element=>$val){
foreach($val->children() as $element=>$val){
}
} Resultat
children.php
?>
17
Lecture d’un fichier
6. SimpleXMLElement::getName
<?php
include 'biblio.php';
?>
test.php
18
Utilisation de XPATH
6. SimpleXMLElement::xpath
<?php
include 'biblio.php';
?> xpath1.php
19
Utilisation de XPATH
6. SimpleXMLElement::xpath
<?php
include 'biblio.php';
?> xpath2.php
20
Attribuer des valeurs
7. Modifier des valeurs
<?php
$biblio = new SimpleXMLElement(biblio.xml);
echo $biblio->asXML();
?> changeval.php
Resultat
21
Ajouter des éléments et des attributs
8. SimpleXMLElement::addChild / addAttribute
<?php
include 'biblio.php';
$biblio = new SimpleXMLElement($xmlstr);
// Add a child element to the livre element
$biblio->livre->addChild("Number","50");
// Add a child element after the last element inside note
$livre=$biblio->addChild("livre");
$livre->addChild("titre","Nvtitre");
$livre->addChild("auteur","Nvauteur"); Resultat
$livre->addChild("date","date1");
$editeur = $biblio->livre[3]->addAttribute("editeur",
"Nvediteur");
foreach ($biblio->livre[3]->attributes() as $att => $valatt) {
echo "<b> $att : $valatt </b> <br/>";
}
echo $biblio-> asXML();
?>
22
addchild.php
Ajouter des éléments et des attributs
9. Sauvegarder les modifications
<?php
<?xml version="1.0" standalone="yes"?>
include 'biblio.php'; <biblio>
$biblio = new SimpleXMLElement($xmlstr); ….
// Add a child element to the livre element <livre editeur="Nvediteur">
$biblio->livre->addChild("Number","50"); <titre>Nvtitre</titre>
// Add a child element after the last element inside note <auteur>Nvauteur</auteur>
$livre=$biblio->addChild("livre"); <date>date1</date>
$livre->addChild("titre","Nvtitre"); </livre>
$livre->addChild("auteur","Nvauteur");
</biblio> Nvbiblio.xml
$livre->addChild("date","date1");
$editeur = $biblio->livre[3]->addAttribute("editeur", "Nvediteur");
Resultat
foreach ($biblio->livre[3]->attributes() as $att => $valatt) {
echo "<b> $att : $valatt </b> <br/>";
}
echo $biblio-> asXML(‘Nvbiblio.xml’);
?>
addchild.php
23
Attribuer des valeurs
10. SimpleXMLElement::count
<?php
include 'biblio.php';
$biblio = new SimpleXMLElement($xmlstr);
$i=1;
foreach ($biblio->livre as $livre)
{
Resultat
echo $livre->getName(), " $i contient " ,
$livre->count() , " noeuds <br/>";
$i++;
}
?> count.php
24