PHP 5. simplexml. A. Belaïd 1



Documents pareils
Langage HTML (2 partie) <HyperText Markup Language> <tv>lt La Salle Avignon BTS IRIS</tv>

XML par la pratique Bases indispensables, concepts et cas pratiques (3ième édition)

PloneLabs un gestionnaire de contenu pour les laboratoires

Document Object Model (DOM)

Magento. Magento. Réussir son site e-commerce. Réussir son site e-commerce BLANCHARD. Préface de Sébastien L e p e r s

Programmation Internet Cours 4

Module Com231A - Web et Bases de Données Notion 5 : Formulaires et utilisation des Bases de Données avec PHP

WysiUpStudio. CMS professionnel. pour la création et la maintenance évolutive de sites et applications Internet V. 6.x

HTML. Notions générales

TP1. Outils Java Eléments de correction

Gestion de contenu d un site web avec TYPO3 Manuel de l administrateur

Refonte des sites internet du SIEDS

WEBSEMINAIRE INTRODUCTION AU REFERENCEMENT

1 ère Université WEB. Courbevoie Samedi 21 octobre Votre site interactif sur internet.

Programmation Web. Madalina Croitoru IUT Montpellier

Module http MMS AllMySMS.com Manuel d intégration

Installation / Sauvegarde Restauration / Mise à jour

Édu-groupe - Version 4.3

Modélisation PHP Orientée Objet pour les Projets Modèle MVC (Modèle Vue Contrôleur) Mini Framework

Introduction à MATLAB R

TP JAVASCRIPT OMI4 TP5 SRC

Introduction. PHP = Personal Home Pages ou PHP Hypertext Preprocessor. Langage de script interprété (non compilé)

CRÉER, ROUTER ET GÉRER UNE NEWSLETTER, UN ING

PHP 5.4 Développez un site web dynamique et interactif

Spécification de Harvard. Version française: Scriptol.fr

Formulaire pour envoyer un mail

Soon_AdvancedCache. Module Magento SOON. Rédacteur. Relecture & validation technique. Historique des révisions

Initiation à html et à la création d'un site web

PROSOP : un système de gestion de bases de données prosopographiques

Outils logiciels pour l'ingénierie documentaire

L envoi d un formulaire par courriel. Configuration requise Mail Texte Mail HTML Check-list

Les outils marketing. Page 1

PHP et mysql. Code: php_mysql. Olivier Clavel - Daniel K. Schneider - Patrick Jermann - Vivian Synteta Version: 0.9 (modifié le 13/3/01 par VS)

Dans nos locaux au 98 Route de Sauve NÎMES. Un ordinateur PC par stagiaire, scanner, imprimante/copieur laser couleur

Annexe C Spécification pour les fichiers importés en format XML

DOM - Document Object Model

ALGORITHMIQUE ET PROGRAMMATION En C

4. Personnalisation du site web de la conférence

Web Site Story Etude, développement et valorisation de votre présence internet

Groupe Eyrolles, 2004 ISBN :

FTP : File TRansfer Protocol => permets d envoyer des gros fichiers sur un serveur (ou de télécharger depuis le serveur)

25 mars. Tutoriel sur Laravel. Préparé par : Lydiane Beaulne-Bélisle. Ceci est un tutorial qui montre comment débuter avec le Framework PHP Laravel.

PRODIGE V3. Manuel utilisateurs. Consultation des métadonnées

Le front office (utilisateur client):

Manuel du composant CKForms Version 1.3.2

Alfresco SHARE Travaillons ensemble

Module BD et sites WEB

Guide d installation de Gael

TP2 : Client d une BDD SqlServer

INTERNET est un RESEAU D ORDINATEURS RELIES ENTRE EUX A L ECHELLE PLANETAIRE. Internet : interconnexion de réseaux (anglais : net = réseau)

Générer du code à partir d une description de haut niveau

1. Installation du Module

UE 8 Systèmes d information de gestion Le programme

.. CSS. Damien Nouvel. Damien Nouvel (Inalco) CSS 1 / 15

Content Management System. bluecube. Blue Cube CMS V4.3 par Digitalcube

Thierry BOULANGER. par la pratique. Bases indispensables Concepts et cas pratiques XML. 3 ième édition. Nouvelle édition

Joomla! Création et administration d'un site web - Version numérique

BTS S.I.O PHP OBJET. Module SLAM4. Nom du fichier : PHPRévisionObjetV2.odt Auteur : Pierre Barais

Serveur d Applications Web : WebObjects

Petite définition : Présentation :

KWISATZ MODULE PRESTASHOP

ECLIPSE ET PDT (Php development tools)

ContactForm et ContactFormLight - Gestionnaires de formulaire pour Prestashop Edité par ARETMIC S.A.

INTRODUCTION A JAVA. Fichier en langage machine Exécutable

Gestion Électronique de Documents et XML. Master 2 TSM

Publication dans le Back Office

Soyez accessible. Manuel d utilisation du CMS

Bernard Lecomte. Débuter avec HTML

WordPress Référencement naturel (SEO) Optimiser. son référencement. Daniel Roch. Préface d Olivier Andrieu

Hébergement de site web Damien Nouvel

FusionInventory. Guillaume Rousse Journées francophones de Perl 2011

.NET - Classe de Log

Comment développer et intégrer un module à PhpMyLab?

GUIDE D UTILISATION DE LA PLATEFORME D ENVOI DE COURRIELS

SHERLOCK 7. Version du 01/09/09 JAVASCRIPT 1.5

ENVOYER DES NEWSLETTER (POM0580) (/PORTAIL/SERVICES-AU-PUBLIC/1262- ENVOYER-DES-NEWSLETTER-POM0580)

Gestion du parc informatique matériel et logiciel de l Ensicaen. Rapport de projet. Spécialité Informatique 2 e année. SAKHI Taoufik SIFAOUI Mohammed

ZOTERO Un outil gratuit de gestion de bibliographies

Programmation Web TP1 - HTML

La mémoire. Un ordinateur. L'octet. Le bit

Dans l'article précédent, vous avez appris

EXTENSION WORDPRESS. Contact Form 7. Proposé par :

TIC. Réseau informatique. Historique - 1. Historique - 2. TC - IUT Montpellier Internet et le Web

< Atelier 1 /> Démarrer une application web

[Projet S9] Rédacteurs & Contributeurs Entité Rédacteurs Contributeurs Imededdine HOSNI Olivier MARTY. Validation du document Nom Date Visa

PARTAGER UN ANNUAIRE COLLECTIF DE SIGNETS AVEC DEL.ICIO.US

Généralités. javadoc. Format des commentaires. Format des commentaires. Caractères spéciaux. Insérer du code

TP réseaux 4 : Installation et configuration d'un serveur Web Apache

Partie publique / Partie privée. Site statique site dynamique. Base de données.

Projet en nouvelles technologies de l information et de la communication

RACCOURCIS CLAVIERS. DEFINITION : Une «combinaison de touches» est un appui simultané sur plusieurs touches.

PHP 5. La base de données MySql. A. Belaïd 1

Master d Informatique Corrigé du partiel novembre 2010

CAHIER DES CHARGES DE REALISATION DE SITE INTERNET

RAPPORT AUDIT SEO. Élaboré à l'attention de : Monsieur Greber Élaboré par : Cédric Peinado

HTML, CSS, JS et CGI. Elanore Elessar Dimar

Modules ICI relais & EXAPAQ Predict v4.0

Cours Plugin Eclipse. Université Paris VI / Parcours STL / Master I Pierre-Arnaud Marcelot - Iktek - pamarcelot@iktek.com

4. SERVICES WEB REST 46

Transcription:

PHP 5 simplexml A. Belaïd 1

Introduction Dans les versions précédentes de PHP, il n y avait aucun outil permettant de manipuler simplement des fichiers XML Dans PHP 5, on trouve un mode, appelé, SimpleXML qui propose une interface pour ce type d applications Son utilisation est faite pour relire ou modifier facilement des fichiers XML simples SimpleXML va vous permettre de lire des valeurs dans un fichier XML le plus simplement du monde A. Belaïd 2

Import et export d un document Import du code XML L ouverture d un fichier XML se fait à l aide de la méthode simple_load_file() Elle prend en paramètre un chemin de fichier et renvoie un objet de la classe simplexmlelement (racine) $racine = simplexml_load_file( monfichier.xml ); On peut aussi initialiser l objet à partir d une chaîne de caractères représentant le fichier XML : on utilise dans ce cas : simplexml_load_string() $xml ="<document><titre>php5 avance</titre> </document>"; $racine = simplexml_load_string($xml); A. Belaïd 3

Export et sauvegarde du code XML À tout moment, on peut afficher ou exporter une partie du document XML grâce à asxml() Elle renvoie le contenu XML dans une chaîne de caractères (ici, toute l arborescence car utilisé sur $racine) $racine = simplexml_load_file( fichier.xml ); echo $racine->asxml(); Sauvegarde des données XML : copier_fichier.php $racine = simplexml_load_file( fichier.xml ); echo $racine->asxml( copie.xml ); A. Belaïd 4

Manipulation des éléments Exemple : copie.xml <?xml version="1.0" encoding="iso-8859-1" <html lang="fr"> <head><title>php 5</title></head> <body> <h1>php 5</h1> <p>la version 5 de <acronym>php</acronym>vient de sortir</p> <p>la dernière version était la 4.3.x</p> </body> </html> A. Belaïd 5

Manipulation des éléments Accéder à un nœud par son nom : un seul nœud On utilise son nom : acces_noeud_nom.php $racine = simplexml_load_file( copie.xml ); $body = $racine->body; $element_h1 = $body->h1 echo $element_h1; Affiche : PHP 5 A. Belaïd 6

Manipulation des éléments Accéder à plusieurs nœuds : acces_plus_noeud.php Si plusieurs nœuds ont le même nom, SimpleXML renvoie un tableau indexé de ces éléments, on peut au choix y accéder avec leur index ou les lire un à un avec foreach() $racine = simplexml_load_file( fichier.xml ); // On récupère le premier paragraphe $premier_p = $body->p[0]; // On lit tous les paragraphes foreach($body->p as $p){ echo utf8_decode($p), <br /> ; } A. Belaïd 7

Manipulation des éléments Lire les nœuds fils : children() renvoie une liste : lire_fils.php // Accès au premier fils de l élément <body> $racine = simplexml_load_file( fichier.xml ); $body = $racine->body; $liste = $body->children(); echo $liste[0]; // Affiche le titre en <h1> // qui était le premier fils de <body> A. Belaïd 8

Manipulation des éléments Lire les nœuds fils (suite) : lire_plus_fils.php On peut également utiliser la syntaxe foreach() pour itérer à travers tous les éléments fils // Réaffiche le contenu de <body> $racine = simplexml_load_file( fichier.xml ); $body = $racine->body; foreach(body->children() as $nom=>$element){ echo "La balise $nom contient l élément \»», utf8_decode($element), "<br> ; } A. Belaïd 9

Manipulation des éléments Ajouter un nœud fils : addchild() : ajouter_noeud_fils.php // Ajoute un paragraphe à la fin d une page XHTML $racine = simplexml_load_file( fichier.xml ); $body = $racine->body; $body->addchild("p", "PHP 5 avancé"); Seul le premier paramètre «p»est obligatoire A. Belaïd 10

Manipulation des éléments Afficher le contenu textuel d un nœud : echo et print : affiche_contenu_noeud.php // Affichage du titre $racine = simplexml_load_file( fichier.xml ); $body = $racine->body; echo $body->h1; // On peut également forcer avec un cast de ce type echo htmlentities((string) $body->h1); A. Belaïd 11

Manipulation des attributs Accéder à un attribut : acces_attribut.php // langue du document XHTML $html = simplexml_load_file( fichier.xml ); echo $html[ lang ]; Lister tous les attributs : attributes() : lister_attributs.php renvoie un tableau avec, pour chaque ligne, le nom de chaque attribut comme clé, et son contenu comme valeur // Réécriture de la balise d ouverture HTML $html = simplexml_load_file( fichier.xml ); $balise = <html ; foreach($html->attributes() as $nom => $valeur) { $balise.=" $nom= $valeur "; } $balise.= ">"; echo $balise; A. Belaïd 12

Manipulation des attributs Modifier un attribut : modifier_attributs.php On peut créer ou modifier un attribut en changeant directement. Il est possible de supprimer un attribut avec unset() // Passe la déclaration de la langue en anglais $html = simplexml_load_file( fichier.xml ); $html[ lang ] = en ; $html ->asxml( coipe2.xml ); //effacement de l attribut Unset($html[ attribut ]); Ajouter un attribut : addattribute() sur l élément parent // crée une déclaration de langue si elle n existe pas $html = simplexml_load_file( fichier.xml ); $hml->body[0]->addattribute("lang", "e"); A. Belaïd 13

Fichier RSS (Really Simple Syndication) C est un format conçu par Netscape afin de présenter les titres des articles en publication de manière standardisée Chacun peut relire ce fichier XML pour connaître les dernières nouvelles et les intégrer à une interface personnelle On peut ainsi être prévenu d une mise à jour d un site ou d un contenu sans avoir à le visiter manuellement On parle de syndication de données A. Belaïd 14

Fichier RSS (Really Simple Syndication) On trouve plusieurs versions du format RSS, voici un échantillon de RSS 0.91?xml version="1.0" encoding="iso-8859-1" <?xml-stylesheet href="/rss/stylerss.xml" type="text/xsl" <!DOCTYPE rss PUBLIC "-//Netscape Communications//DTD RSS 0.91//EN" "http://my.netscape.com/publish/formats/rss- 0.91.dtd"> <rss version="0.91"> <channel> <title>titre du canal RSS</title> <description>description globale du fil RSS</description> <link>url d'une page décrivant le canal RSS</link> <image> <title>titre de l'image associée au canal</title> <url>http://url_de_l_image</url> <link>http://lien_associé_à_l_image</link> </image> <copyright>auteur du fil RSS</copyright> <webmaster>adresse électronique du webmaster</webmaster> <item> <title>titre du premier item</title> <link>lien vers la page décrivant l'item plus en détail</link> <description>description synthétique de l'item> </item> <item> <title>titre du second item</title> <link>lien vers la page décrivant l'item plus en détail</link> <description>description synthétique de l'item> </item> </channel> </rss> A. Belaïd 15

Afficher un fichier RSS : lire_fichier_rss.php $fichier_rss='http://www.generationnt.com/export/rss_soft.xml'; $racine=simplexml_load_file($fichier_rss); foreach($racine->channel->item as $news){ echo 'Actu: ', utf8_decode((string) $news->title), '<br />'; } 16

Exemple réel : lire_fichier_rss2.php function lit_rss($fichier,$objets) { // on lit tout le fichier if($chaine = @implode("",@file($fichier))) { // on découpe la chaîne obtenue en items $tmp = preg_split("/<\/?"."item".">/",$chaine); // pour chaque item for($i=1;$i<sizeof($tmp)-1;$i+=2) // on lit chaque objet de l'item foreach($objets as $objet) { // on découpe la chaine pour obtenir le contenu de l'objet $tmp2 = preg_split("/<\/?".$objet.">/",$tmp[$i]); // on ajoute le contenu de l'objet au tableau resultat $resultat[$i-1][] = @$tmp2[1]; } // on retourne le tableau resultat return $resultat; } } $rss = lit_rss("http://www.20minutes.fr/rs s/une.xml",array("title","link","desc ription","pubdate")); echo '<center><table cellpadding="0" cellspacing="0" class="portal_table" width="100%">'; foreach($rss as $tab) { echo '<tr><td class="header">'.$tab[0].'</td></tr >'; echo '<tr><td>'.$tab[2].' <a href="'.$tab[1].'">lire tout l\'article</a></td></tr>'; echo '<tr><td><div align=right>posté le '.date("d/m/y",strtotime($tab[3])).' </div></td></tr>'; } echo '</table></center>';

Recherche Xpath Possible avec la méthode xpath() Syntaxe $objet_simple_xml->xpath(expression_xpath); Exemple : chercher tous les paragraphes <p> : cherche_p.php $xml = simplexml_load_file( fichier.xml ); $xpath = /html/body/p ; //Recherche des paragraphes $paragraphes = $xml->xpath($xpath); foreach($paragraphes as $p){ echo <p>, utf8_decode($p), "</p>\n"; } A. Belaïd 18

TD Énoncé Écrire une interface pour interroger par XPath Cette interface doit comprendre : Un inputtext pour écrire l expression Un textarea avec parcours pour aller chercher un document xml Cette zone peut être initialisée avec un document xml La réponse sera donnée dans une autre zone textarea Pour faire cet exercice Regarder le cours sur XPath Pour afficher le résultat de manière indentée avec les noms de balises : echo "<pre>".htmlentities($resultat -> asxml()). "</pre>" A. Belaïd 19