19
Les technologies XML Les technologies XML Cours 3 : Cours 3 : Les APIS XML Les APIS XML Janvier 2009 Janvier 2009 - Version 1.0 - - Version 1.0 -

Les technologies XML Cours 3 : Les APIS XML Janvier 2009 - Version 1.0 -

Embed Size (px)

Citation preview

Page 1: Les technologies XML Cours 3 : Les APIS XML Janvier 2009 - Version 1.0 -

Les technologies XMLLes technologies XML

Cours 3 : Cours 3 : Les APIS XMLLes APIS XML

Janvier 2009Janvier 2009

- Version 1.0 - - Version 1.0 -

Page 2: Les technologies XML Cours 3 : Les APIS XML Janvier 2009 - Version 1.0 -

LES APIS POUR MANIPULER LES APIS POUR MANIPULER DES DOCUMENTS XMLDES DOCUMENTS XML

Les APIS XML :Les APIS XML :

Sont des analyseurs syntaxiques (Sont des analyseurs syntaxiques (parserparser en anglais, parfois en anglais, parfois francisé en francisé en parseurparseur), des librairies proposant un ensemble de ), des librairies proposant un ensemble de composants logiciels composants logiciels

Permettent et facilitent la lecture, la génération et le traitement Permettent et facilitent la lecture, la génération et le traitement de documents XML.de documents XML.

Ces API sont implémentées sur la base de 2 modèles  : Ces API sont implémentées sur la base de 2 modèles  :

HiérarchiqueHiérarchique : DOM XML (Document Objet Model) permet la : DOM XML (Document Objet Model) permet la manipulation d’un document XML après l’avoir représenté en manipulation d’un document XML après l’avoir représenté en mémoire sous la forme d’un arbre d’objetsmémoire sous la forme d’un arbre d’objets

EvénementielEvénementiel : SAX (Simple API for XML) permet la manipulation : SAX (Simple API for XML) permet la manipulation d’un document XML au fur et à mesure de sa lecture, sans avoir d’un document XML au fur et à mesure de sa lecture, sans avoir à le charger en totalité en mémoire. L’extraction des données à le charger en totalité en mémoire. L’extraction des données est basée sur une gestion d’événements (création d’un est basée sur une gestion d’événements (création d’un document, d’un élément ...).document, d’un élément ...).

Page 3: Les technologies XML Cours 3 : Les APIS XML Janvier 2009 - Version 1.0 -

LES APIS POUR MANIPULER LES APIS POUR MANIPULER DES DOCUMENTS XMLDES DOCUMENTS XML

DOM est une norme du consortium w3DOM est une norme du consortium w3

http://www.w3.org/DOM/http://www.w3.org/DOM/

SAX est une spécification disponible en projet Open Source.SAX est une spécification disponible en projet Open Source.

http://www.saxproject.org/http://www.saxproject.org/

Il existe de nombreuses implémentations de la norme DOM Il existe de nombreuses implémentations de la norme DOM et de la spécification SAXet de la spécification SAX

XercesXerces

Est un projet Open Source de la fondation ApacheEst un projet Open Source de la fondation Apache

Fournit une implémentation d’analyseur syntaxique Fournit une implémentation d’analyseur syntaxique XML DOM et SAX.XML DOM et SAX.

http://xerces.apache.org/http://xerces.apache.org/

Page 4: Les technologies XML Cours 3 : Les APIS XML Janvier 2009 - Version 1.0 -

LES APIS POUR MANIPULER LES APIS POUR MANIPULER DES DOCUMENTS XMLDES DOCUMENTS XML

Les différentes classes des APIS XML :Les différentes classes des APIS XML :

Page 5: Les technologies XML Cours 3 : Les APIS XML Janvier 2009 - Version 1.0 -

LES APIS POUR MANIPULER LES APIS POUR MANIPULER DES DOCUMENTS XMLDES DOCUMENTS XML

JAXP ou Java API for XML ParsingJAXP ou Java API for XML Parsing : :

L’API javax.xml.parsers permet d’obtenir des L’API javax.xml.parsers permet d’obtenir des instances d’un analyseur syntaxique DOM ou SAX.instances d’un analyseur syntaxique DOM ou SAX.

C’est l’étape préliminaire à toute manipulation C’est l’étape préliminaire à toute manipulation de document XMLde document XML. .

Un parseur a pour rôle d’analyser un document XML.Un parseur a pour rôle d’analyser un document XML.

Il peut en outre vérifier la validité d’un document en Il peut en outre vérifier la validité d’un document en fonction de sa DTD ou du XML-Schema associéfonction de sa DTD ou du XML-Schema associé

Page 6: Les technologies XML Cours 3 : Les APIS XML Janvier 2009 - Version 1.0 -

LES APIS POUR MANIPULER LES APIS POUR MANIPULER DES DOCUMENTS XMLDES DOCUMENTS XML

L’API org.xml.saxL’API org.xml.saxElle implémente les interfaces SAX, fournit des classes et Elle implémente les interfaces SAX, fournit des classes et méthodes permettant la manipulation d’un document méthodes permettant la manipulation d’un document XML via une gestion d’événement.XML via une gestion d’événement.

Le parseur analyse le flot de caractères du document et Le parseur analyse le flot de caractères du document et appelle des méthodes de rappel (en anglais appelle des méthodes de rappel (en anglais callbackcallback) ) lorsqu’il rencontre les balises de début et de fin du lorsqu’il rencontre les balises de début et de fin du document et d’élémentsdocument et d’éléments

Page 7: Les technologies XML Cours 3 : Les APIS XML Janvier 2009 - Version 1.0 -

LES APIS POUR MANIPULER LES APIS POUR MANIPULER DES DOCUMENTS XMLDES DOCUMENTS XML

Exemple d’un lecteur SAX :Exemple d’un lecteur SAX :

Page 8: Les technologies XML Cours 3 : Les APIS XML Janvier 2009 - Version 1.0 -

LES APIS POUR MANIPULER LES APIS POUR MANIPULER DES DOCUMENTS XMLDES DOCUMENTS XML

Exemple d’un lecteur SAX (suite) :Exemple d’un lecteur SAX (suite) :Ce premier exemple est un parseur de type SAX qui se Ce premier exemple est un parseur de type SAX qui se contente de détecter les différents balises et attributs contenus contente de détecter les différents balises et attributs contenus dans un document XML et d’effectuer un traitement associé. dans un document XML et d’effectuer un traitement associé.

Pour le faire, la classe principale hérite de la classe Pour le faire, la classe principale hérite de la classe HandlerBase ou de la classe DefaultHandler. Ces 2 classes HandlerBase ou de la classe DefaultHandler. Ces 2 classes fournissent en effet un certain nombre de méthodes capables fournissent en effet un certain nombre de méthodes capables de gérer les évènements liées à l’analyse d’un document XML :de gérer les évènements liées à l’analyse d’un document XML :startElement gère l’évènement début d’un élément, startDocument gère l’événement début d’un document, endDocument gére l’événement fin d’un document...

Une fois, l’instance d’un parseur de type SAXParser obtenue, il Une fois, l’instance d’un parseur de type SAXParser obtenue, il faut ensuite, à l’aide de la méthode parse, associer la source de faut ensuite, à l’aide de la méthode parse, associer la source de données XML (passée en paramètre) au flux d’évènements données XML (passée en paramètre) au flux d’évènements gérés par les méthodes des classes HandlerBase ou gérés par les méthodes des classes HandlerBase ou DefaultHandler.DefaultHandler.

Page 9: Les technologies XML Cours 3 : Les APIS XML Janvier 2009 - Version 1.0 -

LES APIS POUR MANIPULER LES APIS POUR MANIPULER DES DOCUMENTS XMLDES DOCUMENTS XML

L’API org.xml.dom L’API org.xml.dom ::Elle implémente les interfaces DOM et fournit des classes Elle implémente les interfaces DOM et fournit des classes et des méthodes permettant la manipulation d’un et des méthodes permettant la manipulation d’un document XML via une gestion d’arbre. On peut ainsi document XML via une gestion d’arbre. On peut ainsi ajouter ou supprimer un noeud, ajouter ou supprimer un ajouter ou supprimer un noeud, ajouter ou supprimer un attribut à un nœud (méthodes appendChild, setAttribute attribut à un nœud (méthodes appendChild, setAttribute de la classe Element par exemple)...de la classe Element par exemple)...

Un parseur DOM construit un objet DOM, puis parcours en Un parseur DOM construit un objet DOM, puis parcours en largeur et en profondeur l’arbre afin d’en traiter chaque largeur et en profondeur l’arbre afin d’en traiter chaque nœud.nœud.

Page 10: Les technologies XML Cours 3 : Les APIS XML Janvier 2009 - Version 1.0 -

LES APIS POUR MANIPULER LES APIS POUR MANIPULER DES DOCUMENTS XMLDES DOCUMENTS XML

Lecture d’un document XML par DOM (1)Lecture d’un document XML par DOM (1)

import javax.xml.parsers.*; import javax.xml.parsers.*;

import org.w3c.dom.*; import org.w3c.dom.*;

import org.xml.sax.SAXException; import org.xml.sax.SAXException;

import java.io.*; import java.io.*;

public class ExempleDOM {public class ExempleDOM {

public static void main(String[] args) {public static void main(String[] args) {

try{try{

// création d'une fabrique de constructeur de documents DOM// création d'une fabrique de constructeur de documents DOM

DocumentBuilderFactory fabrique = DocumentBuilderFactory.newInstance();DocumentBuilderFactory fabrique = DocumentBuilderFactory.newInstance();

// création d'un constructeur de documents DOM// création d'un constructeur de documents DOM

DocumentBuilder constructeur = fabrique.newDocumentBuilder();DocumentBuilder constructeur = fabrique.newDocumentBuilder();

Page 11: Les technologies XML Cours 3 : Les APIS XML Janvier 2009 - Version 1.0 -

LES APIS POUR MANIPULER LES APIS POUR MANIPULER DES DOCUMENTS XMLDES DOCUMENTS XML

Lecture d’un document XML par DOM (2)Lecture d’un document XML par DOM (2) // lecture du contenu d'un fichier XML avec le constructeur pour// lecture du contenu d'un fichier XML avec le constructeur pour

// créer le document DOM correspondant // créer le document DOM correspondant

File xmlFile = new File("ExempleDOM.xml");File xmlFile = new File("ExempleDOM.xml");

Document document = constructeur.parse(xmlFile);Document document = constructeur.parse(xmlFile);

// traitement du document// traitement du document

printDocument(document);printDocument(document);

}}

catch(ParserConfigurationException pce) {catch(ParserConfigurationException pce) {

System.out.println("Erreur de configuration du parseur DOM");System.out.println("Erreur de configuration du parseur DOM");

}}

catch(SAXException se) {catch(SAXException se) {

System.out.println("Erreur lors du parsing du document");System.out.println("Erreur lors du parsing du document");

}}

Page 12: Les technologies XML Cours 3 : Les APIS XML Janvier 2009 - Version 1.0 -

LES APIS POUR MANIPULER LES APIS POUR MANIPULER DES DOCUMENTS XMLDES DOCUMENTS XML

Lecture d’un document XML par DOM (3)Lecture d’un document XML par DOM (3)catch(IOException ioe) {catch(IOException ioe) {

System.out.println("Erreur d'entrée/sortie");System.out.println("Erreur d'entrée/sortie");

}}

}}

public static void printNode(Node node) {public static void printNode(Node node) {

System.out.println(node);System.out.println(node);

NodeList nodes = node.getChildNodes();NodeList nodes = node.getChildNodes();

for(int i=0; i<nodes.getLength(); i++) {for(int i=0; i<nodes.getLength(); i++) {

Node n = nodes.item(i);Node n = nodes.item(i);

printNode(n);printNode(n);

}}

}}

public static void printDocument(Document document) {public static void printDocument(Document document) {

Element racine = document.getDocumentElement();Element racine = document.getDocumentElement();

printNode(racine);printNode(racine);

}}

}}

Page 13: Les technologies XML Cours 3 : Les APIS XML Janvier 2009 - Version 1.0 -

LES APIS POUR MANIPULER LES APIS POUR MANIPULER DES DOCUMENTS XMLDES DOCUMENTS XML

Lecture d’un document XML par DOM (4)Lecture d’un document XML par DOM (4)Fichier XML à lire :Fichier XML à lire :

<?xml version="1.0" encoding="ISO-8859-1"?><?xml version="1.0" encoding="ISO-8859-1"?>

<bibliothèque><bibliothèque>

<livre id="0"><livre id="0">

<titre>titre0</titre><titre>titre0</titre>

<auteur>auteur0</auteur><auteur>auteur0</auteur>

<éditeur>éditeur0</éditeur><éditeur>éditeur0</éditeur>

</livre></livre>

<livre id="1"><livre id="1">

<titre>titre1</titre><titre>titre1</titre>

<auteur>auteur1</auteur><auteur>auteur1</auteur>

<éditeur>éditeur1</éditeur><éditeur>éditeur1</éditeur>

</livre></livre>

</bibliothèque></bibliothèque>

Page 14: Les technologies XML Cours 3 : Les APIS XML Janvier 2009 - Version 1.0 -

LES APIS POUR MANIPULER LES APIS POUR MANIPULER DES DOCUMENTS XMLDES DOCUMENTS XML

Lecture d’un document XML par DOM (4)Lecture d’un document XML par DOM (4)Résultat :Résultat :

[bibliothèque: null][bibliothèque: null]

[#text: [#text:

]]

[livre: null][livre: null]

[#text: [#text:

]]

[titre: null][titre: null]

[#text: titre0][#text: titre0]

[#text: [#text:

]]

[auteur: null][auteur: null]

[#text: auteur0][#text: auteur0]

[#text: [#text:

]]

[éditeur: null][éditeur: null]

[#text: éditeur0][#text: éditeur0]

[...][...]

Page 15: Les technologies XML Cours 3 : Les APIS XML Janvier 2009 - Version 1.0 -

LES APIS POUR MANIPULER LES APIS POUR MANIPULER DES DOCUMENTS XMLDES DOCUMENTS XML

Exemple de générateur d’XML par DOM (1)Exemple de générateur d’XML par DOM (1)

Page 16: Les technologies XML Cours 3 : Les APIS XML Janvier 2009 - Version 1.0 -

LES APIS POUR MANIPULER LES APIS POUR MANIPULER DES DOCUMENTS XMLDES DOCUMENTS XML

Exemple de générateur d’XML par DOM (2)Exemple de générateur d’XML par DOM (2)

Page 17: Les technologies XML Cours 3 : Les APIS XML Janvier 2009 - Version 1.0 -

LES APIS POUR MANIPULER LES APIS POUR MANIPULER DES DOCUMENTS XMLDES DOCUMENTS XML

Exemple de générateur d’XML par DOM (3)Exemple de générateur d’XML par DOM (3)

Page 18: Les technologies XML Cours 3 : Les APIS XML Janvier 2009 - Version 1.0 -

LES APIS POUR MANIPULER LES APIS POUR MANIPULER DES DOCUMENTS XMLDES DOCUMENTS XML

Exemple de transformation de document XML :Exemple de transformation de document XML :

On dispose d’un fichier source input.xml et d’une fiche On dispose d’un fichier source input.xml et d’une fiche XSLT input.xsl,XSLT input.xsl, et on désire créer un fichier output.html et on désire créer un fichier output.html à partir de ces deux éléments.à partir de ces deux éléments.

Page 19: Les technologies XML Cours 3 : Les APIS XML Janvier 2009 - Version 1.0 -

CONCLUSION :CONCLUSION :SAX VERSUS DOMSAX VERSUS DOM

SAX ou DOM ?SAX ou DOM ?