PHP et XML. Traitements de XML



Documents pareils
Programmation des Applications Réparties. Parsers XML DOM et SAX

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

Document Object Model (DOM)

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

XML, PMML, SOAP. Rapport. EPITA SCIA Promo janvier Julien Lemoine Alexandre Thibault Nicolas Wiest-Million

Master d Informatique Corrigé du partiel novembre 2010

Faculté de Génie Chaire industrielle en infrastructures de communication. La technologie XML. Wajdi Elleuch

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

< _155_0>

Faculté Polytechnique de Mons. Le processus d Extraction, Transformation et Load (ETL) dans des entrepôts de données XML

Module BDWEB. Maîtrise d informatique Cours 9 - Xquery. Anne Doucet. anne.doucet@lip6.fr

4. SERVICES WEB REST 46

PHP 5.4 Développez un site web dynamique et interactif

THEME PROJET D ELABORATION D UNE BASE DE DONNEES SOUS LE SERVEUR MYSQL

SII Stage d informatique pour l ingénieur

BASE DE DONNÉES XML NATIVE

Tutoriel: Création d'un Web service en C++ avec WebContentC++Framework

PHP 4 PARTIE : BASE DE DONNEES

L'API DOM : Document Object Model

Compression de Données - Algorithme de Huffman Document de Conception

Evolution et architecture des systèmes d'information, de l'internet. Impact sur les IDS. IDS2014, Nailloux 26-28/05/2014

Gestion documentaire (Extraits du CCI version 1.2)

Gestion des références commerciales

Programmation Web. Madalina Croitoru IUT Montpellier

GUI Client in HomeSIP Project

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

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

Stockage du fichier dans une table mysql:

Programmation Internet Cours 4

XML et Bases de données. Les bases de données XML natives.

les techniques d'extraction, les formulaires et intégration dans un site WEB

Mysql. Les requêtes préparées Prepared statements

NFA016 : Introduction. Pour naviguer sur le Web, il faut : Naviguer: dialoguer avec un serveur web

DOM - Document Object Model

Algorithmes d'apprentissage

Gestion Électronique de Documents et XML. Master 2 TSM

Serveur d'archivage 2007 Installation et utilisation de la BD exist

Outils logiciels pour l'ingénierie documentaire

BASE DE DONNÉES XML NATIVE

PDO : PHP Data Object 1/13

Programme scientifique Majeure ARCHITECTURE DES SYSTEMES D INFORMATION. Mentions Ingénierie des Systèmes d Information Business Intelligence

Parcours FOAD Formation EXCEL 2010

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

Module ebay pour PrestaShop Guide du vendeur

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

L'intégration de Moodle à l'université Rennes 2 Haute Bretagne

La base de données XML exist. A. Belaïd

SQL Parser XML Xquery : Approche de détection des injections SQL

Livre Blanc WebSphere Transcoding Publisher

Présentation du langage et premières fonctions

Server-side XML. PAS FINI... mais ok pour un début. Originaux. Auteurs et version. Prérequis: Java de base, servlets, GUI et XML

Master Technologies numériques appliquées à l'histoire Deuxième année

Devenez un véritable développeur web en 3 mois!

AIDE A LA CREATION D UN COMPTE NOM DE DOMAINE, SOUS-DOMAINE, FTP, BASE DE DONNEES

Arbres binaires de recherche

Base de Connaissances SiteAudit. Utiliser les Rapports Planifiés. Sommaire des Fonctionnalités. Les Nouveautés

Développement d'applications Web HTML5 L'art et la manière avec Visual Studio 2015 et TFS

Formation en Logiciels Libres. Fiche d inscription

Introduction aux «Services Web»

Introduction à Microsoft InfoPath 2010

CONSERVATOIRE NATIONAL DES ARTS ET METIERS. Centre Régional Associé de Nantes. Mémoire présenté en vue d obtenir l examen probatoire en informatique

Programme de formation

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

Drupal Développeur. Theming et développement pour Drupal. Une formation Formateur : Fabien Crépin. Drupal Développeur.

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

Prénom : Matricule : Sigle et titre du cours Groupe Trimestre INF1101 Algorithmes et structures de données Tous H2004. Loc Jeudi 29/4/2004

Chapitre IX. L intégration de données. Les entrepôts de données (Data Warehouses) Motivation. Le problème

chapitre 4 Nombres de Catalan

PIVOT. Pivot/Querier Documentation technique XML/XSD/XSLT

Petite définition : Présentation :

Perl Orienté Objet BioPerl There is more than one way to do it

LES OUTILS D ALIMENTATION DU REFERENTIEL DE DB-MAIN

1 / Introduction. 2 / Gestion des comptes cpanel. Guide débuter avec WHM. 2.1Créer un package. 2.2Créer un compte cpanel

Cours 14 Les fichiers

Description des pratiques à adopter pour la mise à jour du layout en utilisant le gestionnaire de conception de Sharepoint 2013

Projet 2. Gestion des services enseignants CENTRE D ENSEIGNEMENT ET DE RECHERCHE EN INFORMATIQUE. G r o u p e :

Failles XSS : Principes, Catégories Démonstrations, Contre mesures

Le Web de Données Dan VODISLAV Université de Cergy-Pontoise Master Informatique M2 Plan

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

AutoCAD Petit exercice sous

Cette application développée en C# va récupérer un certain nombre d informations en ligne fournies par la ville de Paris :

FileMaker Server 11. Publication Web personnalisée avec XML et XSLT

Licence Sciences et Technologies Examen janvier 2010

RESPONSIVE WEB DESIGN

TP JEE Développement Web en Java. Dans ce TP nous commencerons la programmation JEE par le premier niveau d une application JEE : l application web.

Malgré son aspect spartiate, Freeplane offre de nombreuses fonctionnalités en particulier dans le domaine de la diffusion des cartes sur le Web.

COUCHE 7/OSI : TRANSFERT DE FICHIERS FTAM

Logiciel : GLPI Version : SYNCRHONISATION DE GLPI AVEC ACTIVE DIRECTORY. Auteur : Claude SANTERO Config. : Windows 2003.

Formation HTML / CSS. ar dionoea

Jade. Projet Intelligence Artificielle «Devine à quoi je pense»

UE 8 Systèmes d information de gestion Le programme

Table des matières Hakim Benameurlaine 1

VOLÉE Master of Advanced Studies RAPID APPLICATION DEVELOPMENT.

Travaux pratiques. Compression en codage de Huffman Organisation d un projet de programmation

LE CENTRE DE RÉFÉRENCE PROFESSIONNELLE TIC DE BRUXELLES TAKE I.T. EASY FORMATION TECHNIQUES IT & WEB POUR INFORMATICIENS

Environnements informatiques

Introduction à Expression Web 2

Documentation CAS à destination des éditeurs

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

Transcription:

PHP et XML XML et PHP 1 Traitements de XML Deux approches pour manipuler des documents XML: Approche DOM: Utilise un analyseur (Parser) qui transforme le document XML en structure d'arbre. Il faut parcourir cet arbre grâce à des méthodes de l'api DOM. Approche SAX : Considère un document XML comme suite d'éléments qui génèrent des événements pour lesquels il faut programmer des actions qui les traite. Les événements correspondent à : début d'un élément, fin d'un élément, etc. PHP a introduit une troisième appelée SimpleXML XML et PHP 2 1 1

Approche SAX Utilise un objet Parser créé avec la méthode xml_parser_create(): $parseur= xml_parser_create(); On doit programmer des méthodes (Gestionnaire ou Callback) pour traiter chacun des événements. Pour chaque partie d un élément XML, SAX génère un événement spécifique: Événement du début d'élément (ex. <employe>) Événement de la fin d'élément (ex. ) Événement pour le contenu (ex. <nom> Bernard </nom>) XML et PHP 3 Gestionnaires d'événements On associe un gestionnaire à un événement avec xml_set_element_handler() et xml_set_character_data_handler(). xml_set_element_handler() : associe un gestionnaire aux événements de début et de fin d'un élément. Paramètres: Parseur créé, gestionnaire pour le début de l'élément, gestionnaire pour la fin de l' élément. xml_set_character_data_handler() : permet de désigner le gestionnaire qui doit traiter le contenu d'un élément. XML et PHP 4 2 2

Gestionnaires d'événements Exemple : xml_set_element_handler($parseur,"debut","fin"); Désigne debut() et fin() comme gestionnaires de début d'élément et de fin d'élément respectivement. xml_set_character_data_handler($parseur,"contenu"); désigne contenu() comme gestionnaire du contenu. Fonction debut(): Paramètres: parseur, nom de l'élément, tableau de ses attributs. Fonction fin() : Paramètres: parseur, le nom de l'élément. Fonction contenu(): Paramètres: parseur, contenu de l'élément. XML et PHP 5 Gestionnaires d'événements <emplye Id="EMP12345"> <nom> Alain </nom> <salaire> 60000 </salaire> function debut($parseur, $nom, $attributs) { print "On a rencontre le debut de l'element: $nom. " print "Ses attributs sont: " foreach ($attributs as $valeur) { print "$valeur" function fin($parseur, $nom) { print ""On a rencontre la fin de l'element: $nom. "; function contenu($parseur,$donnees){ print "Le contenu de l'element est: $donnees. "; XML et PHP 6 3 3

Traitement SAX Le méthode xml-parse() permet d appeler le parseur et exécuter les gestionnaires. Avant d invoquer cette méthode, il faut lui fournir les données sur lesquelles il doit s exécuter. Ces données sont (généralement) dans un fichier XML. La méthode xml-parse() possède trois arguments: Parseur, fichier de données, condition d'arrêt. On libère le parseur à la fin avec xml_parser_free(). XML et PHP 7 <! Fichier : xml1.php --> <?php $parseur=xml_parser_create(); function debut($parseur, $nom, $attributs) { print "L'element : ". $nom."<br/>"; print "=> Attributs:"."<br />"; foreach($attributs as $valeur) { print "$valeur"."<br />"; function fin($parseur,$nom) { print "Fin de :". $nom."<br />"; function contenu($parser,$donnee) { print "=> Contenu: ". $donnee."<br />"; Traitement SAX xml_set_element_handler($parseur,"debut","fin"); xml_set_character_data_handler($parseur,"contenu"); $fp=fopen("employe.xml","r"); $fichier=fread($fp,sizeof($fp)); xml_parse($parseur,$fichier, feof($fichier)) ; xml_parser_free($parseur);?> <employes> <employe id="id1234"> <nom>alain</nom> <salaire>60000</salaire> <employe id="id1235"> <nom>jean</nom> <salaire>80000</salaire> <employe id="id1236"> <nom>michel</nom> employe.xm <salaire>90000</salaire> </employes> XML et PHP 8 4 4

Traitement SAX On peut lire les données à partir d'une chaine de caractères. Ca évite l'étape de lecture <?php <! Fichier: xml2.php --> xml_set_element_handler($parseur,"debut","fin"); xml_set_character_data_handler($parseur,"contenu"); $chaine="<employe id='id1234'> <nom>alain</nom> <salaire>60000</salaire> "; xml_parse($parseur,$chaine,true) ; xml_parser_free($parseur);?> XML et PHP 9 Messages d'erreurs La méthode xml_get_error_code() retourne une code d'erreur XML. La méthode xml_error_string() convertit un code d erreurs en un texte descriptif. La méthode exit("message d'erreur") permet de terminer un programme. Avec xml_error_string() et xml_get_error_code, elles permettent d afficher une message de terminaison approprié. <!-- Fichier: xml2.php --> <?php xml_set_element_handler($parseur,"debut","fin"); xml_set_character_data_handler($parseur,"contenu"); $chaine="<employe id='id1234'> <nom>alain<salaire>60000</salaire> "; if (!xml_parse($parseur,$chaine,true) ) exit(xml_error_string(xml_get_error_code($parseur))); xml_parser_free($parseur);?> Génère le message "Mismatched tag" XML et PHP 10 5 5

Approche DOM Commence d'abord par transformer le document XML en une structure d'arbre appelé Arbre DOM. Cet arbre est stockée en mémoire. On le parcourt à l'aide de méthodes appartenant à l'api DOM afin de le traiter. On doit créer cet arbre comme objet de la classe DOMDocument() XML et PHP 11 Parcours de l'arbre DOM On charge l'arbre avec la méthode load(). L'élément racine de l'arbre est l'objet documentelement Pour chaque nœud, on trouve ses enfants dans la propriété childnodes qui remmène un tableau des enfants du nœud courant: $racine=$xmldoc->documentelement; $enfants=$racine->childnodes; XML et PHP 12 6 6

Parcours de l'arbre DOM <! Fichier xml3.php --> <?php $xmldoc = new DOMDocument(); $xmldoc->load("employe.xml"); $racine=$xmldoc->documentelement; $enfants=$racine->childnodes; foreach ($enfants as $item) { print $item->nodename."=".$item->nodevalue. "<br/>";?> #text= employe= Alain 60000 #text= employe= Jean 80000 #text= employe= Michel 90000 #text= <employes> <employe id="id1234"> <nom>alain</nom> <salaire>60000</salaire> <employe id="id1235"> <nom>jean</nom> <salaire>80000</salaire> <employe id="id1236"> <nom>michel</nom> <salaire>90000</salaire> </employes> XML et PHP 13 Parcours de l'arbre DOM Exemple <?php $dom = new DomDocument(); $dom->load('test2.xml'); $root = $dom->documentelement; process_children($root); function process_children($node) { $children = $node->childnodes; foreach ($children as $elem) { if ($elem->nodetype == XML_ELEMENT_NODE) { if ($elem->nodename == 'body') { echo $elem->getattributenode('background')->value. "\n"; process_children($elem);?> Source :?? XML et PHP 14 7 7

Approche SimpleXML SimpleXML est introduit dans PHP 5. Traitement facilité et rapide de documents XML Convertit un document XML en objet: Les éléments sont convertis en attributs d'un objet SimpleXMLElement. Les attributs sont accessibles avec des tableaux associatifs dont les clés sont les noms des attributs Les contenus des élémenst sont convertis en chaines de caractères. XML et PHP 15 Traitement SimpleXML En général, on suit les étapes suivants: Lire le fichier XML On obtient le premier élément Obtenir le nom du premier élément avec la méthode getname() Boucler sur chaque enfant de l'élément en utilisant la fonction children() Imprimer le nom (obtenu avec getname()) et les données de cet enfant XML et PHP 16 8 8

Traitement SimpleXML <!-- Fichier: xml4.php --> <?php $xml = simplexml_load_file("employe.xml"); echo $xml->getname(). "<br/>"; foreach($xml->children() as $child) { echo $child->getname().":".$child. "<br/>";?> Source: http://www.w3schools.com/php/php_xml_simplexml.asp XML et PHP 17 Espaces de nom Ensembles permettant de qualifier des éléments et des attributs avec un URI Identifient le domaine de définition d'un objet. Utilisation de préfixe de qualification Les éléments de l'espace utilisent ce préfixe <nl:livre xmlns:nl="http://www.info.uqam.ca/exemplesxml"> <nl:titre> Programmation des reseaux </nl:titre> <nl:auteur> Abdel Obaid </nl:auteur> <nl:editeur> Loze-Dion </nl:editeur> <nl:annee >2003 </nl:annee> </nl:livre> XML et PHP 18 9 9

Les schémas Structure d'un document XML. Document XML, standard w3c: Eléments définis par un modèle de contenu Structure hiérarchique de types (simples, complexes, ) L attribut schemalocation fait le lien entre le document XML et le schéma. <?xml version="1.0"?> <xs:schema xmlns:xs="http://www.w3.org/2001/xmlschema"> XML et PHP 19 Espaces de noms par défaut targetnamaspace permet de définir un espace de noms pour les données non préfixées. <?xml version="1.0"?> <xs:schema xmlns:xs= http://www.w3.org/2001/xmlschema targetnamespace= http://www.info.uqam.ca/espacedenoms > <xs:element name="livre"> <xs:complextype> <xs:sequence> <xs:element name="titre" type="xs:string"/> <xs:element name="auteur" type="xs:string"/> <xs:element name="editeur" type="xs:string"/> <xs:element name="annee" type="xs:string"/> </xs:sequence> </xs:complextype> </xs:element> </xs:schema> XML et PHP 20 10 10

Exemple <?xml version="1.0"?> <xs:schema xmlns:xs= http://www.w3.org/2001/xmlschema targetnamespace= http://www.info.uqam.ca/espacedenoms elementformdefault="qualified" attributeformdefault="qualified"> <xs:element name="librairie"> <xs:complextype> <xs:sequence> <xs:element ref="livre" minoccurs="1" maxoccurs="unbounded"/> </xs:sequence> </xs:complextype> </xs:element> <xs:element name="livre"> <xs:complextype> <xs:sequence> <xs:element name="titre" type="xs:string" /> <xs:element name="auteur" type="xs:string" /> <xs:element name="editeur" type="xs:string" /> <xs:element name="annee" type="xs:string"/> </xs:sequence> </xs:complextype> </xs:element> </xs:schema> XML et PHP 21 XSL XSL (extensible Stylesheet Language) permet de définir des styles d'affichage de documents XML. Permet de transformer des documents XML en XHTML. Contient trois compsantes: XSLT: Transformation de documents XML XPath: Extraction de parties de documents XML et PHP 22 11 11

Feuilles de style XSL Règles à appliquer à chaque noeud dans lequel une valeur est rencontrée. La balise <xsl:stylesheet> donne le début de la définition de la feuille de style. Élemenst de XSL: <xsl:value-of />: Valeur d'un nœud. <xsl:for-each> </xsl:for-each>: Chaque élément d'un ensemble d'éléments d'un nœud. <xsl:if test="condition" >: Élément quui satisfait le condition <xsl:choose>: Choix entre élements : XML et PHP 23 Un exemple de XSL <?xml version="1.0" encoding="iso-8859-1"?> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/xsl/transform"> <xsl:template match="/"> <html> <body> <table border="1"> <tr bgcolor="#9acd32"> <th align="left"> Title</th> <th align="left"> Artist</th> </tr> <xsl:for-each select="catalogue/cd"> <tr> <td> <xsl:value-of select="titre"/> </td> <td> <xsl:value-of select="artiste"/> </td> </tr> </xsl:for-each> </table> </body> </html> </xsl:template> </xsl:stylesheet> XML et PHP 24 12 12

XPATH Ensemble de règles pour extraire des parties d'un document XML Utilise des expressions de chemin (Path expressions) pour localiser des nœuds d'un document XML. Le document étant considéré comme un arbre Des expressions sont décrites à l'aide de patterns, des conditions et des fonctions des sélection XML et PHP 25 13 13