API pour XML. Mihaela JUGANARU-MATHIEU mathieu@emse.fr. février 2012. École Nationale Supérieure des Mines de St Etienne.



Documents pareils
< _155_0>

Document Object Model (DOM)

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

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

DOM - Document Object Model

INTRODUCTION A JAVA. Fichier en langage machine Exécutable

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

L'API DOM : Document Object Model

Master d Informatique Corrigé du partiel novembre 2010

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

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

Évaluation et implémentation des langages

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

BASE DE DONNÉES XML NATIVE

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

Corrigé des exercices sur les références

Cours 1: Java et les objets

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

Chapitre I Notions de base et outils de travail

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

Java Licence Professionnelle CISII,

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

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

Programmer en JAVA. par Tama

34. DOM (Document Object Model)

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

Introduction à Java. Matthieu Herrb CNRS-LAAS. Mars

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

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

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

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

INITIATION AU LANGAGE JAVA

TP1. Outils Java Eléments de correction

Tutoriel d installation de Hibernate avec Eclipse

ACTIVITÉ DE PROGRAMMATION

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

Remote Method Invocation (RMI)

Ingénierie Dirigée par les Modèles. Editeurs de modèles. (Eclipse Modeling Tools) Jean-Philippe Babau

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

Synchro et Threads Java TM

Architecture Orientée Service, JSON et API REST

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

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

LES OUTILS D ALIMENTATION DU REFERENTIEL DE DB-MAIN

Java Licence professionnelle CISII,

Programmation Web. Madalina Croitoru IUT Montpellier

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

Java DataBaseConnectivity

Programmation Objet Java Correction

Qu'est-ce que XML? XML : Extensible Markup Language. Exemple de document SGML SGML

Info0101 Intro. à l'algorithmique et à la programmation. Cours 3. Le langage Java

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

Premiers Pas en Programmation Objet : les Classes et les Objets

DSL. Domain Specific Language. À l'aide des technologies Eclipse Modeling. Goulwen Le Fur Le 23 novembre 2012

TP1 : Initiation à Java et Eclipse

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

Chapitre 10. Les interfaces Comparable et Comparator 1

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

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

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

OpenPaaS Le réseau social d'entreprise

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

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

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

TP1 : Initiation à Java et Eclipse

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

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

Documentation CAS à destination des éditeurs

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)

Arbres binaires de recherche

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

Utiliser Java sans BlueJ

LANGAGUE JAVA. Public Développeurs souhaitant étendre leur panel de langages de programmation

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

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

Applet pour visualiser les variables «automate» notifiées

Auto-évaluation Programmation en Java

Remote Method Invocation Les classes implémentant Serializable

Mercredi 15 Janvier 2014

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

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.

Groupe Eyrolles, 2004 ISBN :

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

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

FreePlane 1.1 Kris Bostoen Drève des Soupirs Bierghes (Rebecq) Juin 2010

Cours d Algorithmique et de Langage C v 3.0

Introduction aux concepts d ez Publish

Urbanisation de système d'information. PLM 6 (Product Lifecycle Management) Collaboration et partage d'informations

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

Intergiciels pour la répartition CORBA : Common Object Request Broker. Patrice Torguet torguet@irit.fr Université Paul Sabatier

Principes. 2A-SI 3 Prog. réseau et systèmes distribués 3. 3 Programmation en CORBA. Programmation en Corba. Stéphane Vialle

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

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)

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

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

Je catalogue, tu FRBRises, il/elle googlise. L évolution des catalogues et les bibliothécaires Vendredi 29 mars 2013 Manufacture des tabacs

4. SERVICES WEB REST 46

UE Programmation Impérative Licence 2ème Année

Aspects techniques : guide d interfaçage SSO

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

Transcription:

API pour XML Mihaela JUGANARU-MATHIEU mathieu@emse.fr École Nationale Supérieure des Mines de St Etienne février 2012

Les outils pour traiter XML (validation, navigation, interrogation) sont puissants d un point de vue pouvoir d expression, mais ils s avèrent insuffisant pour la réalisation des applications complètes. Nécessité de pouvoir traiter du XML dans un programme écrit en langage impératif, orienté objet ou non (C, C+, Java, PHP, C#, etc). Il existe diverses API permettant de traiter le XML depuis un langage de programmation de haut niveau.

et = Document Object Model est une recommandation du W3C http://www.w3.org/tr/ = Simple API for XML est une recommandation d un groupe de travail http://www.saxproject.org/ et sont des API (Application Programming Interface) qui ont des implémentations dans divers langages (Java, C++, PHP,...) pour travailler avec XML sur la base d une analyse (parsing) du document de travail.

Pour les deux API on réalise un parsing (analyse) du document XML afin de pouvoir traiter le contenu.

: : construit une représentation complète du document dans la mémoire est adapté au traitement des documents qui se modifient ou qui doivent être traités dans la globalité défini des trigger que sont activés lors de l apparition d un événemet (un document XML se traduit par un flux d événements) est mieux adapté pour des document de grandes taille et pour l extraction (consultation) de l information contenue dans le document XML

Le parser prend en entrée un document XML et produit un arbre avec une forme d objet et contenant des objets. chaque objet à l exception de la racine appartient à une classe ou sous-classe Node il y a des opérations pour créer/supprimer des nœuds et pour la navigation Les applications qui utilisent sont diverses : processeur XSLT, éditeur XML, applications d interface avec les bases de données, etc...

Les type de nœuds sont :

Un arbre se définit de manière récursive. Les type de nœuds sont : Chaque nœud a un type qui correspond à une catégorie syntaxique XML et chaque nœud a des propriétés. Selon le type de nœud il y a une série d opérations avec les nœuds et une série d interfaces.

Les types de nœuds sont : Document = document XML (la racine) DocumentType = type de document (DTD) ProcessingInstruction = instruction de traitement Element = élément XML Attribute = attribut XML Entity = declaration d entité EntityReference = référence à une entité Comment = commentaire CharacterData = commentaire et section de texte Text = section de texte CDataSection = section CDATA DocumentFragment = fragment de document XML Notation = notation

Les propriétés du type noeud (Node) et leur type : nodetype - unsigned short nodename - String nodevalue - String attributes - NamedNodeMap parentnode - Node firstchild - Node lastchild - Node childnodes - NodeList previoussibling - Node nextsibling - Node

Les opérations avec le type noeud : Type résultat Méthode Paramètre Nœud insertbefore Nœud nouveau, Nœud fils Nœud replacechild Nœud nouveau, Node ancien Nœud removechild Nœud fils Nœud appendchild Nœud nouveau boolean haschildnode - Nœud clonenode boolean preuve

Exemple : insérer un élément de forme <adventure type = epic >&adventure1;</adventure> avant le 4-ème élément du document. var racine = mydocument.documentelement; var enfants = racine.childnodes; var el_nouv = createelement("adventure") ; var ent_ref = createentityreference("adventure1"); el_nouv.setattribute("type", "epic"); el_nouv.appendchild(ent_ref); insertbefore(el_nouv, enfants.item(3));

Le principe de est le suivant : chaque balise ouverte ou fermée est un événement ouvrir ou fermer un document est un événement rencontrer du texte est un événement Le parser travaille avec un flux linéaire et détecte au fur et à mesure ces événement. Pour chaque événement on peut indiquer que l on fait une extraction/transformation du flux ou non. peut jouer le rôle de filtre entre une application qui génère du XML et une autre application qui traite un certain type de flux.

- exemple de flux

en Java Parser : org.xml.sax.xmlreader Handlers : org.xml.sax.contenthandler org.xml.sax.dtdhandler org.xml.sax.errorhandler org.xml.sax.entityresolver Interfaces d implémentation par défaut (coquille vide) : org.xml.sax.helpers.defaulthandler

- exemple de code String filename = "..."; ContentHandler mycontenthandler = new...;... XMLReader parser = XMLReaderFactory.createXMLReader(); parser.setcontenthandler(mycontenthandler); parser.parse(filename); public static void main(string[] args) { Trace t = new Trace(); Parser p = new Parser(); p.setcontenthandler(t); try { p.parse(args[0]); } catch (Exception e) {e.printstacktrace();} }

2 est une librairie libre (licence MIT) et fiable écrite en C standard permettant d analyser et traiter du XML. 2 implémente les API et, XPath, XML Base, XML Pointer, la validation par DTD et XSchema. La commande xmllint fait partie de la librairie. La librairie peut s interfacer avec d autres langages : C++, PHP, Ruby, TCL, etc.