Écrire une application XML?



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

Master d Informatique Corrigé du partiel novembre 2010

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

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

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

Bases Java - Eclipse / Netbeans

Chapitre 2. Classes et objets

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

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

Corrigés des premiers exercices sur les classes

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

TP1 : Initiation à Java et Eclipse

Application web de gestion de comptes en banques

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.

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

Corrigé des exercices sur les références

Introduction à Java. Matthieu Herrb CNRS-LAAS. Mars

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

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

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

Chapitre 10. Les interfaces Comparable et Comparator 1

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

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

Types d applications pour la persistance. Outils de développement. Base de données préexistante? 3 modèles. Variantes avec passerelles

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

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

4. SERVICES WEB REST 46

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

Traduction des Langages : Le Compilateur Micro Java

2 Chapitre 1 Introduction

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

GOL502 Industries de services

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

RMI. Remote Method Invocation: permet d'invoquer des méthodes d'objets distants.

Web Tier : déploiement de servlets

Chapitre VI- La validation de la composition.

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

TP1. Outils Java Eléments de correction

Info0604 Programmation multi-threadée. Cours 5. Programmation multi-threadée en Java

Initiation à JAVA et à la programmation objet.

TP1 : Initiation à Java et Eclipse

Java 7 Les fondamentaux du langage Java

Langage et Concepts de Programmation Objet. 1 Attributs et Méthodes d instance ou de classe. Travaux Dirigés no2

Programmation Objet - Cours II

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

Bien architecturer une application REST

1/ Présentation de SQL Server :

Programmation Objet Java Correction

Architectures Web Services RESTful

INF2015 Développement de logiciels dans un environnement Agile. Examen intra 20 février :30 à 20:30

Architecture Orientée Service, JSON et API REST

1. Installation d'un serveur d'application JBoss:

27/11/12 Nature. SDK Python et Java pour le développement de services ACCORD Module(s)

RMI le langage Java XII-1 JMF

Une introduction à la technologie EJB (2/3)

< Atelier 1 /> Démarrer une application web

Approche Contract First

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

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

BIRT (Business Intelligence and Reporting Tools)

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

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

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

NFP 121. Java et les Threads. Présentation : Thierry Escalarasse Mai 2007

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

Java c est quoi? Java pourquoi?

Construire des plug-ins pour SAS Management Console SAS 9.1

7 Développement d une application de MapReduce

Auto-évaluation Programmation en Java

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

INTRODUCTION A JAVA. Fichier en langage machine Exécutable

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

BASE DE DONNÉES XML NATIVE

Généralités sur le Langage Java et éléments syntaxiques.

TD Objets distribués n 3 : Windows XP et Visual Studio.NET. Introduction à.net Remoting

Synchro et Threads Java TM

Étude de l interopérabilité de deux langages de programmation basée sur la machine virtuelle de Java

Business Process Execution Language

Guide de référence pour l achat de Business Analytics

Programmation par les Objets en Java

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

IFT287 Exploitation de base de données relationnelles et orientées objet. Laboratoire Mon premier programme Java en Eclipse

Utiliser Java sans BlueJ

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

Catalogue des formations Edition 2015

Classe ClInfoCGI. Fonctions membres principales. Gestion des erreurs

Certificat Big Data - Master MAthématiques

J2EE - Introduction. Développement web - Java. Plan du chapitre

P r ob lé m a t iq u e d e la g é n é r icit é. Pr in cip e d e la g é n é r icit é e n Ja v a ( 1 /3 )

Remote Method Invocation Les classes implémentant Serializable

Cours 14 Les fichiers

Alfstore workflow framework Spécification technique

[APPLICATON REPARTIE DE VENTE AUX ENCHERES]

INITIATION AU LANGAGE JAVA

Cours 1 : Qu est-ce que la programmation?

Conception et Implémentation d un serveur d applications dans le cadre du projet EISMO

Remote Method Invocation (RMI)

Tutoriel d installation de Hibernate avec Eclipse

Cours 1 : Introduction. Langages objets. but du module. contrôle des connaissances. Pourquoi Java? présentation du module. Présentation de Java

1. Installation du Module

Transcription:

Université de Reims Champagne-Ardenne Écrire une application XML? F. Nolot Licence professionnelle CMSII 2004-2005 1

Université de Reims Champagne-Ardenne Écrire une application XML? Simple API for XML : SAX F. Nolot Licence professionnelle CMSII 2004-2005 2

SAX? C'est une API de niveau parseur Les documents sont modélisés comme un flux de d'événements Les événements sont la découverte par le parseur des balises, des PCDATA,... Le document est analysé par SAX du début jusqu'à la fin, élément par élément, attribut par attribut A partir de cette analyse, on peut fabriquer une structure de données de type arbre <A>texte<B/></A> A texte B F. Nolot Licence professionnelle CMSII 2004-2005 3

Pourquoi SAX? Permet de réaliser de petites applications XML, légères et adaptées à vos besoins Permet de faire des traitements en ligne, l'intégralité du document n'est pas chargée en mémoire Toutes les outils pour faire l'analyse d'un document XML sont fournis Traitement des erreurs avec une certaine souplesse Permet de fabriquer des messages d'erreur spécifiques à votre application F. Nolot Licence professionnelle CMSII 2004-2005 4

Quand ne faut-il pas choisir SAX? Aucun moyen d'accéder aléatoirement à des données XML Le flux d'événement est strictement séquentiel Impossible de revenir en arrière dans l'analyse Les applications utilisent SAX pour écrire un document avec une structure qui sera ensuite utilisé avec XPath F. Nolot Licence professionnelle CMSII 2004-2005 5

Université de Reims Champagne-Ardenne Écrire une application XML? Utilisation de SAX F. Nolot Licence professionnelle CMSII 2004-2005 6

Quels sont les parseurs SAX 2? Crimson Xerces Parser suportant XML 1.0, disponible via l'api basée sur le Project X de Sun : JAXP 1.1 (Java API for XML Processing) Ce parser n'est maintenant plus utilisé par les dernières versions de JAXP Famille de parseurs XML de l'apache XML Project Disponible à http://xml.apache.org/xerces Depuis J2SE 1.4 JAXP 1.1 est livré en standard Le parseur utilisé était Crimson jusque J2SE 1.4.1. Depuis J2SE 1.4.2, c'est Xerces qui est maintenant le parseur XML de référence F. Nolot Licence professionnelle CMSII 2004-2005 7

Producteurs et consommateurs L'API SAX définit 2 rôles différents : le producteur et le consommateur Le rôle de producteur d'événements est tenu par un parseur XML et est représenté par une instance d'une classe Le producteur est chargé de transmettre des événements d'analyse aux objets qui tiennent le second rôle : celui de consommateur d'événements Les consommateurs font le «vrai» travail Ils interprètent les événements de l'analyse et les utilisent pour créer des structures de données spécialisées Si aucun consommateur existe, rien ne se produit F. Nolot Licence professionnelle CMSII 2004-2005 8

Première application Nous allons partir du squelette d'une application SAX (fichier Exemple1.java) Explication du code : XMLReader producer; Le type le plus fréquent de producteur d'événements SAX2 qui est un parseur XML Il va produire un flux d'événements lors de la rencontre d'éléments dans le document XML producer = XMLReaderFactory.createXMLReader(); Création du parseur XML consumer = new DefaultHandler(); Implémente la plupart des interfaces de consommations d'événements : que fait quand on trouve une balise ouvrante, fermante, un attribut,...? Si aucun méthode n'est redéfinie, par défaut, elle ne fait rien producer.setcontenthandler(consumer); ContentHandler permet d'annoncer aux consommateurs les principaux événements qui sont : les éléments, les attributs et le texte producer.seterrorhandler(consumer); Permet de gérer les erreurs producer.parse (argv[0]); Indique au parseur de lire le texte XML donnée en paramètre (URI absolue). F. Nolot Licence professionnelle CMSII 2004-2005 9

Gestion du PCDATA A partir de la classe DefaultHandler, nous allons redéfinir la méthode characters qui va permet de gérer les PCDATA Le consommateur d'événements va donc maintenant pour réagir en fonction des événements fournis par le producteur Redéfinition de la méthode characters de la façon suivante : public void characters(char buf[], int offset, int length) throws SAXException { System.out.print(new String(buf,offset,length)); } Code source : Exemple2.java Compilez et exécutez Exemple2 sur le fichier XML-Cours6- Exemple1.xml. Ne pas oublier que le paramètre doit être une URI absolue F. Nolot Licence professionnelle CMSII 2004-2005 10

Gestion des éléments public void startelement(string namespaceuri, String localname, String qname, Attributes atts) throws SAXException public void endelement(string namespaceuri, String localname, String qname) throws SAXException Utilisation dans Exemple3.java Valeur d'un attribut : atts.getvalue("nom_de_l'attribut") Exercice : A partir du source Exemple4.java, générez un document HTML à partir du fichier XML-Cours6-Exemple1.xml F. Nolot Licence professionnelle CMSII 2004-2005 11

Parseur validant SAX2 permet de définir des propriétés sur le parseur via la méthode setfeature Forcer le parseur à valider un document XML : String uri="http://xml.org/sax/features/validation"; producer.setfeature(uri,true); System.out.println("Validation? : " +producer.getfeature(uri)); Les erreurs du parseur sont interceptées par SAXParseException mais par défaut, les erreurs ne sont pas indiquées Nous devons rédéfinir la méthode error(saxparseexception e) comme dans l'exemple Exemple5.java Exercice : A l'aide de Exemple5, rédigez correctement le fichier XML-Cours6- Exemple1.dtd pour que le fichier XML-Cours6-Exo2.xml soit valide Autres exercices : grâce à Exemple5, vous pouvez vérifier les solutions du Cours5-DTD F. Nolot Licence professionnelle CMSII 2004-2005 12