Vous êtes sur la page 1sur 24

Chapitre 5

Manipulation de XML par PHP


SimpleXML

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

dernière version de PHP 5.3.2.

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

pages Web dynamiques.

Mais PHP peut maintenant créer une grande variété d’applications complexes de

petite taille ou à grande échelle.

Remarque: le nom PHP est dérivé des outils de la page d'accueil personnelle ou de

PHP / FI (comme dans PHP / FI 1.0 et 2.0).

3
Historique de PHP prenant en
charge XML
PHP 3 – SAX (Simple API for XML) parseur (analyseur XML)

PHP 4 – SAX + DOMXML

(non standard, rupture d'API, fuite de mémoire, fonctionnalité incomplète)

PHP 5 – SAX + DOM + SimpleXML

(Réécrit à partir de zéro)

4
SimpleXML

5
SimpleXML
SimpleXML est une extension de PHP5 permettantde manipuler simplement des documents
XML
SimpleXML permet:
- La lecture d’un fichier XML

• accès au contenu d’un fichier XML

• lecture des attributs d’un élément

• lecture d’un fichier à structure complexe

- Modification des valeurs des éléments et des attributs

- Recherche dans un fichier

- Création d‘un fichier XML à partir d’une table MySQL

- Création d’une table MySQL à partir d ‘un fichier XML


6
PHP SimpleXML : fonctions
SimpleXML gère les tâches XML les plus courantes

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

élément (Comparé à DOM et à l'analyseur Expat)

7
PHP SimpleXML : fonctions
SimpleXML Functions:

simplexml_import_dom — Obtenez un objet SimpleXMLElement à partir d'un nœud

DOM.

simplexml_load_file — Interprète un fichier XML dans un objet.

simplexml_load_string — Interprète une chaîne de XML dans un objet.

8
PHP SimpleXML : fonctions
SimpleXMLElement Class:

SimpleXMLElement::attributes — Identifie les attributs d'un élément.

SimpleXMLElement::addAttribute — Ajoute un attribut dans un SimpleXML

element

SimpleXMLElement::addChild — Ajoute un element enfant dans un nœud XML

SimpleXMLElement::asXML — Renvoie une chaîne XML bien formée basée sur

un élément SimpleXML

9
PHP SimpleXML : fonctions
SimpleXMLElement Class:

SimpleXMLElement::children — cherche les enfants d'un nœud donné

SimpleXMLElement::construct —Crée un nouvel objet SimpleXMLElement

SimpleXMLElement::count — Compte les enfants d'un élément

SimpleXMLElement::getDocNamespaces — Retourne les espaces de noms

déclarés dans le document.

SimpleXMLElement::xpath — Exécute une requête XPath sur des données XML

SimpleXMLElement::getName — Obtient le nom de l'élément XML

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:

Object simplexml_load_file (string nom_fichier)

Object simplexml_load_string (string $code)

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>

echo $xml->livre[0]->date , "<br>"; </livre>


<livre editeur= "GALLIMARD " prix= "18.00 ">
?> test1.php <titre> Ritournelle de la faim </titre>
Resultat <auteur>J.M.G Le Clézio</auteur>
<date>2008</date>
</livre>
…..
</biblio> biblio.xml

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';

$biblio = new SimpleXMLElement($xmlstr);

foreach($biblio->children() as $element=>$val){

echo "<h3>", ucfirst($element) ,": $val</h3>";

foreach($val->children() as $element=>$val){

echo " $element : <b>$val</b><br/>";

}
} Resultat
children.php
?>
17
Lecture d’un fichier
6. SimpleXMLElement::getName

<?php

include 'biblio.php';

$biblio = new SimpleXMLElement($xmlstr);

echo $biblio->getName() , ": ";


Resultat
foreach($biblio->livre->attributes() as $Attr) {

echo $Attr->getName() ,"=" , $Attr , " ";

?>
test.php
18
Utilisation de XPATH
6. SimpleXMLElement::xpath

<?php

include 'biblio.php';

$biblio = new SimpleXMLElement($xmlstr);

foreach ($biblio->xpath(‘//livre') as $livre) {

echo $livre->titre, ” de l’auteur ”, $livre->auteur; Resultat

?> xpath1.php

19
Utilisation de XPATH
6. SimpleXMLElement::xpath

<?php

include 'biblio.php';

$biblio = new SimpleXMLElement($xmlstr);


Resultat
foreach ($biblio->xpath(‘//livre[2]') as $livre) {

echo $livre->titre, ’ de l’auteur ’, $livre->auteur;

?> xpath2.php

20
Attribuer des valeurs
7. Modifier des valeurs
<?php
$biblio = new SimpleXMLElement(biblio.xml);

$biblio->livre[0]->titre = ’lala land';

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

Vous aimerez peut-être aussi