1 SAX et JDOM. Création de fichier. 3 Sortie XML. 4 Parser en XML. 5 Parcourir un document XML. 6 Filtrage d un document XML



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

34. DOM (Document Object Model)

XML et Java Vue Balisée en XML. Programmation avancée NFP 121. XML pourquoi faire? Structuration des données. Titre Auteur Section Paragraphe

RAPPELS SUR LES METHODES HERITEES DE LA CLASSE RACINE Object ET LEUR SPECIALISATION (i.e. REDEFINITION)

Introduction à Java. Matthieu Herrb CNRS-LAAS. Mars

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

Flux de données Lecture/Ecriture Fichiers

BIRT (Business Intelligence and Reporting Tools)

Langage et Concepts de ProgrammationOrientée-Objet 1 / 40

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

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

Structure d un programme et Compilation Notions de classe et d objet Syntaxe

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

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

Java DataBaseConnectivity

Programmer en JAVA. par Tama

Chapitre 10. Les interfaces Comparable et Comparator 1

Document Object Model (DOM)

La Programmation Orientée Agent Les Agents Réactifs

Documentation CAS à destination des éditeurs

Licence Bio Informatique Année Premiers pas. Exercice 1 Hello World parce qu il faut bien commencer par quelque chose...

Développement mobile MIDP 2.0 Mobile 3D Graphics API (M3G) JSR 184. Frédéric BERTIN

Tp 1 correction. Structures de données (IF2)

BASE DE DONNÉES XML NATIVE

Corrigé des exercices sur les références

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

Master d Informatique Corrigé du partiel novembre 2010

La gestion des exceptions

Environnements de développement (intégrés)

Encapsulation. L'encapsulation consiste à rendre les membres d'un objet plus ou moins visibles pour les autres objets.

Exceptions. 1 Entrées/sorties. Objectif. Manipuler les exceptions ;

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

Plateforme PAYZEN. Définition de Web-services

Aspects techniques : guide d interfaçage SSO

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

Remote Method Invocation (RMI)

F. Barthélemy. 17 mai 2005

Anne Tasso. Java. Le livre de. premier langage. 10 e édition. Avec 109 exercices corrigés. Groupe Eyrolles, , ISBN :

Serveur d'application Client HTML/JS. Apache Thrift Bootcamp

Approche Contract First

Programmation par composants (1/3) Programmation par composants (2/3)

Programme «Analyste Programmeur» Diplôme d état : «Développeur Informatique» Homologué au niveau III (Bac+2) (JO N 176 du 1 août 2003) (34 semaines)

Optimisation des échanges et traitements XML

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

Développement Logiciel

TP1 : Initiation à Java et Eclipse

TP n 2 Concepts de la programmation Objets Master 1 mention IL, semestre 2 Le type Abstrait Pile

Travaux Pratiques : Lucène - Gestion d un index plein texte

as Architecture des Systèmes d Information

Corrigés des premiers exercices sur les classes

Utiliser Améliorer Prêcher. Introduction à LDAP

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

INITIATION AU LANGAGE JAVA

La persistance des données dans les applications : DAO, JPA, Hibernate... COMPIL 2010 francois.jannin@inp-toulouse.fr 1

SOAP Concepts Application à Glassfish

< _155_0>

API04 Contribution. Apache Hadoop: Présentation et application dans le domaine des Data Warehouses. Introduction. Architecture

Design patterns. Design patterns - définition. Design patterns - avantages

Quelques patterns pour la persistance des objets avec DAO DAO. Principe de base. Utilité des DTOs. Le modèle de conception DTO (Data Transfer Object)

Création d un service web avec NetBeans 5.5 et SJAS 9

LMI 2. Programmation Orientée Objet POO - Cours 9. Said Jabbour. jabbour@cril.univ-artois.fr

Programmation Objet Java Correction

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

RAPPORT DE PROJET Logiciel de gestion de factures - Vébulon

Java Licence Professionnelle Cours 7 : Classes et méthodes abstraites

Architecture Orientée Service, JSON et API REST

Extension SSO Java. Cette note technique décrit la configuration et la mise en œuvre du filtre de custom SSO Java.

Héritage presque multiple en Java (1/2)

Création d objet imbriqué sous PowerShell.

Un ordonnanceur stupide

Programmation Réseau. Sécurité Java. UFR Informatique jeudi 4 avril 13

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

Synchro et Threads Java TM

Application BdD et JDBC. Introduction 1/28. I Dans tout les cas, une seule problématique. I Quelques alternatives :

TD/TP PAC - Programmation n 3

Accès à l'information XML par des requêtes XQuery au travers de son XSchema

Bases Java - Eclipse / Netbeans

TP3. Mail. Attention aux fausses manoeuvres lors de ce TP vous pouvez endommager votre mail sur ouindose.

Cours intensif Java. 1er cours: de C à Java. Enrica DUCHI LIAFA, Paris 7. Septembre Enrica.Duchi@liafa.jussieu.fr

Programmation Orientée Objet Java

Page 1 sur 5 TP3. Thèmes du TP : l la classe Object. l Vector<T> l tutorial Interfaces. l Stack<T>

TD/TP PAC - Programmation n 3

Arbres binaires de recherche

Présentation. Au programme. Fonctionnement. A l issue de ce module vous devriez...

Java Naming and Directory Interface

4 Exemples de problèmes MapReduce incrémentaux

CalDav Manager : Gestionnaire d emploi du temps

Plan du cours. Historique du langage Nouveautés de Java 7

Catalogue des formations Edition 2015

Remote Method Invocation en Java (RMI)

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

GUI Client in HomeSIP Project

TD3: tableaux avancées, première classe et chaînes

Dossier Technique. Détail des modifications apportées à GRR. Détail des modifications apportées à GRR Le 17/07/2008. Page 1/10

Web Tier : déploiement de servlets

Systèmes d information et bases de données (niveau 1)

Pour signifier qu'une classe fille hérite d'une classe mère, on utilise le mot clé extends class fille extends mère

données en connaissance et en actions?

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

Transcription:

Plan 1 SAX et JDOM Java Avance XML par JDOM Emmanuel ADAM LAMIH UMR CNRS 8530 Université de Valenciennes et du Hainaut-Cambrésis FRANCE 25 mars 2008 2 Création de fichier 3 Sortie XML 4 Parser en XML 5 6 Filtrage d un document XML 7 8 E. ADAM (University of Valenciennes) Java Avance 25 mars 2008 1 / 18 JDOM et XML SAX et JDOM SAX SAX est l acronyme de Simple API for XML. Parseur utilisant des événements pour piloter le traitement d un fichier XML Un objet (handler) doit fournir les traitements à réaliser sur les fichiers XML Le parseur appelle ces méthodes JDOM utilise des collections SAX pour parser les fichiers XML. DOM DOM est l acronyme de Document Object Model. C est une spécification du W3C pour proposer une API qui permet de modéliser, de parcourir et de manipuler un document XML rôle de DOM : fournir une représentation d un document XML sous la forme d un arbre d objets et permettre le parcours et la mise à jour). DOM est indépendant du langage d implémentation. Parseur DOM pour JAVA le plus répandu : Xerces JDOM utilise DOM E. ADAM (University of Valenciennes) Java Avance 25 mars 2008 3 / 18 E. ADAM (University of Valenciennes) Java Avance 25 mars 2008 2 / 18 Création de fichier Création d un fichier XML Création Les noeuds d un arbre XML sont appelés Element Exemple Chaque Element peut posséder des propriétés (Attribute) Chaque Element peut posséder des fils de type Elements <?xml version= 1.0 encoding= UTF 8?> <menu> <accompagnement>f r i c a d e l l e s</accompagnement> </menu> E. ADAM (University of Valenciennes) Java Avance 25 mars 2008 4 / 18

Création de fichier Création d un document XML par JDOM Sortie XML Enregistrement / Affichage d un fichier XML import org. jdom. ;... org. jdom. Document document ;... void creerxml () // Racine = menu Element racine = new Element ( menu ) ; // Creation d un nouveau Document JDOM basé sur la racine document = new Document( racine ) ; // Ajout d un sous noeud Element plat = new Element ( F r i t e s ) ; racine. addcontent ( plat ) ; // ajout d une p r o p r i e t e Attribute c l a s s e = new Attribute ( c l a s s e, grasses ) ; plat. s e t A t t r i b u t e ( c l a s s e ) ; // Ajout d un sous noeud a plat Element accompagnement = new Element ( accompagnement ) ; accompagnement. settext ( F r i c a d e l l e s ) ; plat. addcontent (nom) ; Sortie La classe XMLOutputter propose des méthodes de sortie d un document XML Sous différents formats : RawFormat : sans modification d espaces PrettyFormat : avec mise en page CompactFormat : sans la normalisation des espaces Possibilité de sortir : des documents, éléments, commentaires... E. ADAM (University of Valenciennes) Java Avance 25 mars 2008 5 / 18 Sortie XML Affichage et enregistrement d un document XML par JDOM void a f f i c h e () try // a f f i c h a g e c l a s s i q u e par getprettyformat () XMLOutputter s o r t i e = new XMLOutputter ( Format. getprettyformat () ) ; s o r t i e. output ( document, System. out ) ; catch ( java. io. IOException e ) void e n r e g i s t r e ( String f i c h i e r ) try // s o r t i e c l a s s i q u e par getprettyformat () XMLOutputter s o r t i e = new XMLOutputter ( Format. getprettyformat () ) ; // Enregistrement dans f i c h i e r de nom f i c h i e r s o r t i e. output ( document, new FileOutputStream ( f i c h i e r ) ) ; catch ( java. io. IOException e ) E. ADAM (University of Valenciennes) Java Avance 25 mars 2008 6 / 18 Parser en XML Ouvrir un document XML Parser un doc XML Parser un fichier XML = transformer vers une arborescence JDOM. Utilisation du constructeur SAXBuilder, basé sur l API SAX. void dexmlajdom() //On crée une instance de SAXBuilder SAXBuilder sxb = new SAXBuilder () ; try // creation d un document JDOM a p a r t i r du f i c h i e r de nom f i c h i e r document = sxb. build (new F i l e ( f i c h i e r ) ) ; catch ( Exception e ) System. e r r. p r i n t l n ( pb de parsing : + e ) ; E. ADAM (University of Valenciennes) Java Avance 25 mars 2008 7 / 18 E. ADAM (University of Valenciennes) Java Avance 25 mars 2008 8 / 18

Parser en XML Exemple 2 <?xml version= 1.0 encoding= UTF 8?> <menu> <accompagnement>f r i c a d e l l e s</accompagnement> <sauce>bierre</ sauce> <accompagnement>carbonade</ accompagnement> <sauce>bierre</ sauce> <F r i t e s c l a s s e= s a l e e > <accompagnement>moule</ accompagnement> <sauce>maroile</ sauce> </menu> E. ADAM (University of Valenciennes) Java Avance 25 mars 2008 9 / 18 Filtrage d un document XML filtrage d un fichier XML Balayer l arbre Possibilité de récupérer les fils d un noeud Possibilité d accéder aux attributs d un noeud void affichemenu () racine = document. getrootelement () ; // recuperation des p l a t s a base de F r i t e s a p a r t i r de la racine List <Element> l i s t e P l a t s = ( List <Element >) racine. getchildren ( F r i t e s ) ; // balayage par I t e r a t o r I t e r a t o r <Element> i = l i s t e P l a t s. i t e r a t o r () ; Element courant = i. next () ; //On a f f i c h e l accompagnement de l element courant System. out. p r i n t l n ( courant. getchild ( accompagnement ). gettext () ) ; E. ADAM (University of Valenciennes) Java Avance 25 mars 2008 10 / 18 Filtrage d un document XML Exemple de filtre I filtre sur les plats avec sauce à la Bière Filtrage Utilisation d un objet de type Filter Possibilité d utiliser une sous classes : ElementFilter basée sur le filtre d éléments ContentFilter basée sur le de type de contenu (commentaires, éléments,...) AbstractFilter pour coupler les filtres (par ET, OU, negation) void a f f i c h e F i l t r e () //On crée un nouveau f i l t r e F i l t e r f i l t r e = new F i l t e r () public boolean matches ( Object ob ) //1 : on ne f i l t r e que l e s Elements i f (! ( ob instanceof Element ) ) return f a l s e ; Element element = ( Element ) ob ; boolean verifsauce = f a l s e ; //2 on f i l t r e sur la valeur Biere de chaque noeud sauce i f ( element. getchild ( sauce ). gettexttrim (). equals ( Biere ) ) verifsauce = true ; E. ADAM (University of Valenciennes) Java Avance 25 mars 2008 11 / 18 E. ADAM (University of Valenciennes) Java Avance 25 mars 2008 12 / 18

Filtrage d un document XML Exemple de filtre II // Si nos conditions sont remplies on retourne true, f a l s e sinon return verifsauce ; ; // Fin du f i l t r e // getcontent u t i l i s e l e f i l t r e L i s t r e s u l t a t = racine. getcontent ( f i l t r e ) ; // Affichage de l a t t r i b u t c l a s s e I t e r a t o r i = r e s u l t a t. i t e r a t o r () ; Element courant = ( Element ) i. next () ; System. out. p r i n t l n ( courant. getattributevalue ( c l a s s e ) ) ; Modifications Possibilité d utiliser les fonctions suivantes sur les arbres : addcontent, clonecontent, removeattribute, removechild, removechildren, removecontent, removecontent, setattribute, setcontent, setname, settext, E. ADAM (University of Valenciennes) Java Avance 25 mars 2008 13 / 18 Exemple de modification E. ADAM (University of Valenciennes) Java Avance 25 mars 2008 14 / 18 supression des sauces void supprelement ( String elementasupprimer ) racine = document. getrootelement () ; // recuperation des p l a t s L i s t l i s t P l a t s = racine. getchildren ( F r i t e s ) ; I t e r a t o r i = l i s t P l a t s. i t e r a t o r () ; Element courant = ( Element ) i. next () ; // Si on trouve l element a supprimer i f ( courant. getchild ( elementasupprimer )!= n u ll ) courant. removechild ( elementasupprimer ) ; //On renomme l Element pere courant. setname ( p l a t m o d i f i e ) ; Transformation Des règles définies en XSLT permettent de transformer un document XML Intérêt : dialoguer entre applications transmettre les données sous un autre format E. ADAM (University of Valenciennes) Java Avance 25 mars 2008 15 / 18 E. ADAM (University of Valenciennes) Java Avance 25 mars 2008 16 / 18

Exemple de modification I Exemple de modification II transformation de document void transformxml ( org. jdom. Document documentjdomentree, String fichierxsl ) //Document JDOMResult, r é s u l t a t de la transformation TraX JDOMResult documentjdomsortie = new JDOMResult () ; //Document JDOM après transformation org. jdom. Document r e s u l t a t = n u l l ; try TransformerFactory factory = TransformerFactory. newinstance () ; Transformer transformer = factory. newtransformer (new StreamSource ( fichierxsl ) ) ; transformer. transform (new org. jdom. transform. JDOMSource( documentjdomentree ), documentjdomsortie ) ; r e s u l t a t = documentjdomsortie. getdocument () ; XMLOutputter outputter = new XMLOutputter ( Format. getprettyformat () ) ; outputter. output ( r e s u l t a t, new FileOutputStream ( r e s u l t a t. xml ) ) ; catch ( Exception e )... E. ADAM (University of Valenciennes) Java Avance 25 mars 2008 17 / 18 E. ADAM (University of Valenciennes) Java Avance 25 mars 2008 18 / 18