Bonjour,

je débute complètement en Java (en fait, c'est la première fois que j'essaie de compiler un source qui n'est pas de moi) et je n'arrive pas à compiler un source de la FAQ à propos de la lecture d'un XML par SAX.

Le source est celui-là :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
public class PersonneHandler extends DefaultHandler{
   //résultats de notre parsing
   private List<Personne> annuaire;
   private Personne personne;
   //flags nous indiquant la position du parseur
   private boolean inAnnuaire, inPersonne, inNom, inPrenom, inAdresse;
   //buffer nous permettant de récupérer les données 
   private StringBuffer buffer;
   // simple constructeur
   public PersonneHandler(){
      super();
   }
   //détection d'ouverture de balise
   public void startElement(String uri, String localName,
                         String qName, Attributes attributes) throws SAXException{
      if(qName.equals("annuaire")){
         annuaire = new LinkedList<Personne>();
         inAnnuaire = true;
      }else if(qName.equals("personne")){
         personne = new Personne();
         try{
            int id = Integer.parseInt(attributes.getValue("id"));
            personne.setId(id);
         }catch(Exception e){
         //erreur, le contenu de id n'est pas un entier
            throw new SAXException(e);
         }
         inPersonne = true;
      }else {
         buffer = new StringBuffer();
         if(qName.equals("nom")){
            inNom = true;
         }else if(qName.equals("prenom")){
            inPrenom = true;
         }else if(qName.equals("adresse")){
            inAdresse = true;
         }else{
            //erreur, on peut lever une exception
            throw new SAXException("Balise "+qName+" inconnue.");
         }
      }
   }
   //détection fin de balise
   public void endElement(String uri, String localName, String qName)
                throws SAXException{
      if(qName.equals("annuaire")){
         inAnnuaire = false;
      }else if(qName.equals("personne")){
         annuaire.add(personne);
         personne = null;
         inPersonne = false;
      }else if(qName.equals("nom")){
         personne.setNom(buffer.toString());
         buffer = null;
         inNom = false;
      }else if(qName.equals("prenom")){
         personne.setPrenom(buffer.toString());
         buffer = null;
         inPrenom = false;
      }else if(qName.equals("adresse")){
         personne.setAdresse(buffer.toString());
         buffer = null;
         inAdresse = false;
      }else{
         //erreur, on peut lever une exception
         throw new SAXException("Balise "+qName+" inconnue.");
      }          
   }
   //détection de caractères
   public void characters(char[] ch,int start, int length)
                throws SAXException{
      String lecture = new String(ch,start,length);
      if(buffer != null) buffer.append(lecture);       
   }
   //début du parsing
   public void startDocument() throws SAXException {
     System.out.println("Début du parsing");
   }
   //fin du parsing
   public void endDocument() throws SAXException {
     System.out.println("Fin du parsing");
     System.out.println("Resultats du parsing");
     for(Personne p : annuaire){
        System.out.println(p);
     }
   }
}
Je me suis dit qu'il manquait les import au début, j'ai donc rajouté :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
import org.xml.sax.*;
import org.xml.sax.helpers.*;
import javax.xml.parsers.*; 
import java.io.*; 
import java.util.List ;
import java.util.LinkedList ;
au début du code. Malgré cela, j'ai les messages :
"The type LinkedList is not generic" et la même chose pour List.

Je dispose pourtant de JDK 5.0, et j'ai coché dans les propriétés du projet "Compiler compliance level : 5.0"

Merci de votre aide