[Débutant] Pb pour exécuter un source de la FAQ
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:
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:
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 :)