:: Enseignements :: ESIPE :: E3INFO :: 2012-2013 :: Programmation Objet avec Java ::
[LOGO]

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

  1. Ecrire un programme indiquant quels sont les mots qui se trouvent sur la ligne de commande. On affichera qu'une seule occurrence des doublons éventuels.
          java fr.upem.jlb.td10.Unique toto tutu toto titi tutu
        
    • Dans un premier temps, afficher "toto", "titi" et "tutu" dans n'importe quel ordre.
    • Ensuite, afficher "toto", "tutu" "titi" dans cet ordre, c'est à dire l'ordre dans lequel ils ont été saisis (l'ordre d'insertion).
    • Enfin, afficher "titi", "toto", "tutu" dans cet ordre, c'est à dire l'ordre lexicographique.
  2. 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.

  1. 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.
  2. Ouvrir une connection et récupérer le flux de sortie (le contenu) de la page Web. Vous afficherez le contenu ligne à ligne.
  3. A quoi sert la méthode close d'un scanner. Pourquoi cette méthode est importante ?
  4. 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.

  1. Que représente la classe javax.xml.parsers.SAXParserFactory ? Comment créer un objet de ce type ?
  2. A quoi sert la méthode setNamespaceAware() ?
  3. Comment fait on pour créer un parseur SAX à partir d'un objet de type SAXParserFactory ?
    Comment doit-on gérer les exceptions ?
  4. 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 ?
  5. Ecrire une classe qui hérite de DefaultHandler et redéfini le méthodes startElement() et endElement() pour afficher les informations obtenues.
  6. 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...
  7. 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.