:: Enseignements :: ESIPE :: E3INFO :: 2013-2014 :: Programmation Objet avec Java ::
![[LOGO]](http://igm.univ-mlv.fr/ens/resources/mlv.png) |
Ensemble, table associative, ouvrir une URL et parsing XML (SAX)
|
Quelques manipulations de collections bien pratiques, avant de voir comment
récupérer une ressource décrite par une URL sur HTTP et de parser un contenu
XML en SAX.
Exercice 1 - Ensemble et Bag
-
Ecrire un programme indiquant les mots qui sont passés sur la ligne de commande,
en affichant une seule occurrence des doublons éventuels. Exemple:
java fr.upem.jlb.td10.Unique toto tutu toto titi tutu tutu tata tete tata
-
Dans un premier temps, contentez vous d'afficher "toto", "titi", "tata", "tete" et "tutu",
peu importe l'ordre dans lequel ils apparaissent.
Quelle structure de données -- classe Java -- utilisez-vous?
-
Ensuite, efforcez vous d'afficher "toto", "tutu" "titi" "tata" et "tete" dans cet ordre,
c'est à dire l'ordre dans lequel ils ont été saisis (l'ordre d'insertion).
Quelle structure de données -- classe Java -- utilisez-vous?
-
Enfin, afficher "tata", "tete", "titi", "toto", "tutu" dans cet ordre, c'est à dire l'ordre
lexicographique. Quelle structure de données -- classe Java -- utilisez-vous?
-
Ecrire un second programme pour qu'il compte
le nombre de fois qu'un mot apparait sur sa ligne de commande
et affiche chaque mot suivi de son nombre d'occurrences.
N.B. : penser à faire des fonctions assez générales et si possible utilisables
avec autre chose que des String.
Exercice 2 - HTTP
Le but de cet exercice est d'obtenir une réponse suite à une requète HTTP.
-
Utiliser la classe URL pour créer une URL java.net.URL sur la
page web suivante:
http://planetjdk.org/feed.rss.
Vous pouvez aussi essayer d'autres liens RSS.
-
Ouvrir une connection (openConnection()) et récupérer le flux de sortie, i.e., le
contenu (getInputStream()) de la page Web. Vous afficherez ce contenu ligne à ligne.
-
A quoi sert la méthode close d'un scanner.
Pourquoi cette méthode est importante ?
-
Modifier votre code pour que la connection soit fermée
quoi qu'il arrive.
Exercice 3 - Parseur XML
Le but de cet exercice est d'extraire des informations d'une réponse
suite à une requète HTTP.
Il existe 3 spécifications permettant le parsing XML : SAX, DOM et StaX.
Nous utiliserons ici la specification SAX.
-
Que représente la classe javax.xml.parsers.SAXParserFactory ?
Comment créer un objet de ce type ?
-
A quoi sert la méthode setNamespaceAware() ?
-
Comment fait on pour créer un parseur SAX à partir d'un objet
de type SAXParserFactory ?
Comment doit-on gérer les exceptions ?
-
A quoi sert la classe org.xml.sax.helpers.DefaultHandler ?
A quoi servent les méthodes startElement() et endElement()
de l'interface org.xml.sax.ContentHandler ?
-
Ecrire une classe qui hérite de DefaultHandler et redéfini le
méthodes startElement() et endElement() pour afficher
les informations obtenues.
-
Parser le contenue de la page web
http://planetjdk.org/feed.rss
à l'aide du DefaultHandler de la question précédente.
Vous pouvez aussi essayer avec le flux RSS de l'ESIPE...
-
Modifier votre DefaultHandler pour resortir une liste contenant
uniquement les titres ("title") et les liens ("link")
de chaque article du flux RSS.
Attention on ne veut pas le titre et le lien du flux lui même.
Note: voici la page wikipedia sur les flux RSS.
© Université de Marne-la-Vallée