Séance 6 : SAX : Simple API for XML

publicité
TP Compilation / XML
Séance 6 : SAX : Simple API for XML
(Miage L3 - Avril 2005)
Ce TD est consacré à l'utilisation de SAX. Nous utiliserons les API SAX pour lire, écrire et
modifier des données XML. Plus particulièrement nous allons utiliser les packages
javax.xml.* et org.xml.sax.* fournis par SUN dans l'API JAXP (Java API for XML
Parsing) :
http://java.sun.com/xml.
Dans la suite du TD nous utiliserons systématiquement les APIs SAX 2.
Récupérez et installez l'archive :
http://deptinfo.unice.fr/~lips/Miage_L3/Compil_XML/TDs/TD6/Fournitures/jaxp-1.1.tgz
Celle-ci contient la javadoc de l'API JAXP donc vous aurez besoin pour les exercices
suivants.
Lecture (Parsing)
Compteur
Écrire une classe compteur qui comptabilise le nombre d'éléments et le nombre de caractères
présents dans le document qui lui est fourni. Écrire une méthode main qui lit un fichier XML
et renvoie les informations précédentes à la fin de la lecture. Pour effectuer celà, votre classe
Counter devra étendre la classe DefaultHandler.
Écriture
L'écriture d'un document XML à partir d'un programme est appelée sérialisation. Les classes
utilisées pour la sérialisation font partie de jaxp sous le package javax.xml.transform.*.
Écriture simple
A l'aide de ces classes, faire un programme qui génère la sortie suivante :
<?xml version="1.0"?>
<test>Hello world !</test>
Encodage, espaces, etc...
En modifiant l'exemple précédent, produire la sortie suivante dans le fichier test.xml :
<?xml version="1.0" encoding="ISO-8859-1"?>
<test>
<!-- coucou -->
Hello world !
<![CDATA[test <binaire> text]]>
</test>
Jean-Pierre Lips (d’après Stéphane Lavirotte)
Avril 2005
Transformations
Pour ceux qui ont encore du temps, nous allons jouer avec les transformations.
Identité
Écrire un Handler qui se comporte comme une transformation identité (qui ne fait rien) en
utilisant la délégation.
N'oubliez pas les éléments lexicaux, la gestion des erreurs, etc...
Traductions
Écrire un programme qui transforme tous les tags ``foo'' en tags ``bar'' et tous les attributes
``foobar'' en ``barfoo''.
Écrire un programme qui extrait et affiche le contenu textuel de tous les troisièmes tags ``foo''
(successifs) d'un document dans un nouveau document.
Exemple de document source et résultat :
<?xml version="1.0">
<test>
<bar>
<foo>a</foo>
<foo>b</foo>
<foo>c</foo>
</bar>
<bar>
<foo>aa</foo>
<foo>bb</foo>
</bar>
<foo>aaa</foo>
<foo>bbb</foo>
<foo>ccc</foo>
</test>
<?xml version="1.0">
<result>
<foo>c</foo>
<foo>ccc</foo>
</result>
Informations complémentaires
Vous pouvez consulter le tutorial fourni par SUN à l'adresse suivante :
http://java.sun.com/webservices/docs/1.3/tutorial/doc/index.html
Il contient les exemples sur lesquels vous venez de travailler ainsi qu'un ensemble d'exemples
manipulant des documents XML à l'aide de l'API DOM, SAX et XSLT.
Jean-Pierre Lips (d’après Stéphane Lavirotte)
Avril 2005
Téléchargement