Travaux pratiques

SAX et DOM avec JAXP (Java API for XML processing)

Simple API for XML (SAX) et le Document Object Model (DOM) sont deux interfaces de programmation (Application Programming Interface ou API) implémentées dans de nombreux langages qui permettent de manipuler des fichiers au format XML.

Ces deux API se fondent sur des modèles de fonctionnement différents. Pour simplifier, l'API DOM permet de construire un arbre du document XML en mémoire et offre des méthodes pour accéder aux éléments de cet arbre. L'API SAX fonctionne à plus bas niveau et permet de déclencher des évènements (des appels de méthodes) au fur et à mesure de la lecture d'éléments particulier d'un flux XML.

Dans ces travaux pratiques, nous allons utiliser l'implémentation standard de SAX et de DOM au sein de l'environnement Java de Sun (JAXP). Nous vous invitons à commencer ces travaux pratiques par la lecture du tutoriel consacré à l'utilisation de JAXP qui se trouve à l'adresse :

http://java.sun.com/j2ee/1.4/docs/tutorial/doc/JAXPIntro.html

NOTE : ce tutoriel est très long, vous pouvez le parcourir rapidement, commencer les exercices ci-dessous, et y revenir quand vous serez bloqués. Les exemples donnés tout au long de ce tutoriel sont disponibles dans le fichier exemples.tar.gz. Vous pouvez décompresser le contenu de cet archive avec la commande :

tar zxvf exemples.tar.gz

Premier exercice : échauffement

Le répertoire jorf-2002-03-03-53 contient le Journal Officiel de la République Française (JORF) du 3 mars 2002 au format XHTML 1.0 qui n'est rien d'autre que du HTML en XML. Ce répertoire peut-être récupéré sous la forme d'une archive jorf-2002-03-03-53.tar.gz pour que vous puissiez travailler plus facilement.

Étudiez la structuration de ces fichiers. Le fichier principal index.html contient la liste de tous les articles de cet exemplaire du Journal Officiel. Chaque article est stocké dans un fichier séparé dont le nom correspond au numéro de l'article, que l'on appelle également le numéro NOR (c'est une numérotation propre à la Direction des Journaux Officiels qui produit ce journal).

À partir du fichier principal index.html, générez sur la sortie standard la liste des fichiers référencés dans les attributs href des éléments <a>. Vous utiliserez SAX.

Deuxième exercice : course

Cet exercice consiste à produire un seul fichier HTML contenant l'intégralité du contenu du journal officiel. Vous pouvez choisir la méthode qui vous paraît la plus appropriée pour effectuer ce travail, SAX ou DOM.

Troisième exercice : sprint final

En partant du journal officiel de l'exercice précédent, générez un catalogue RSS ayant la forme suivante :

<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:legifrance="http://www.legifrance.gouv.fr/RSS1" version="2.0">
<channel>
	<title>Journal Officiel du ...</title>
	<language>fr-fr</language>
	<copyright>Légifrance</copyright>

	<item>
		<title>Décret n°2002-300 du 28 février 2002 (NOR:ECOT0214221D)</title>
		<guid>ECOT0214221D.html</guid>
		<legifrance:origine>JORF</legifrance:origine>
		<legifrance:numTexte>2002-300</legifrance:numTexte>
		<legifrance:nature>DECRET</legifrance:nature>
		<legifrance:NOR>ECOT0214221D</legifrance:NOR>
		<legifrance:datePublicationTexte>2002-03-03</legifrance:datePublicationTexte>
		<date>2002-02-28 06:00:00</date>
		<author>JORF n°53 du 3 mars 2002</author>
		<description>
		MINISTERE DE L'ECONOMIE, DES FINANCES ET DE L'INDUSTRIE.
		Décret n° 2002-300 du 28 février 2002 pris pour
		l'application de diverses dispositions du code
		monétaire et financier et modifiant les décrets n°
		84-708 du 24 juillet 1984 pris pour l'application de
		la loi n° 84-46 du 24 janvier 1984 relative à
		l'activité et au contrôle des établissements de crédit
		et n° 69-810 du 12 août 1969 relatif à l'organisation
		de la profession et au statut professionnel des
		commissaires aux comptes de sociétés
                </description>
		<legifrance:version>INITIALE</legifrance:version>
		<legifrance:motsCles>
		ECONOMIE, BANQUE, ENTREPRISE D'INVESTISSEMENT, STATUT
		PROFESSIONNEL, PROCEDURE, COMMISSION BANCAIRE,
		FINANCES, ETABLISSEMENT DE CREDIT, COMPAGNIE
		FINANCIERE, ORGANISATION DE LA PROFESSION, COMMISSAIRE
		AUX COMPTES, CAC, RELEVEMENT DE FONCTION, RECUSATION,
		CB
		</legifrance:motsCles>
	</item>

	<item>...</item>
	<item>...</item>
	<item>...</item>
        ...

</channel>
</rss>
      

Comme pour l'exercice précédent, vous pouvez choisir entre SAX et DOM.