Bonjour à tous,
J'essaye de parser un flux XML avec SAX. J'utilise le code source publié sur ce site : "Exemple de gestion d'erreur lors d'un parsing avec SAX"

Le main() de ma classe PersonneHandler :
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
 
 public static void main(String[] args){
      try{
         // création d'une fabrique de parseurs SAX
         SAXParserFactory fabrique = SAXParserFactory.newInstance();
 
         // création d'un parseur SAX
         SAXParser parseur = fabrique.newSAXParser();
 
         // lecture d'un fichier XML avec un DefaultHandler
         File fichier = new File("./ExempleSAX.xml");
         DefaultHandler gestionnaire = new PersonneHandler();
         parseur.parse(fichier, gestionnaire);
 
      }catch(ParserConfigurationException pce){
         System.out.println("Erreur de configuration du parseur");
         System.out.println("Lors de l'appel à SAXParser.newSAXParser()"+pce);
      }catch(SAXException se){
         System.out.println("Erreur de parsing");
         System.out.println("Lors de l'appel à parse()"+se);
         se.printStackTrace();
      }catch(IOException ioe){
         System.out.println("Erreur d'entrée/sortie");
         System.out.println("Lors de l'appel à parse()"+ioe);
      }
   }
Mon flux XML :
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
 
<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE annuaire SYSTEM "Annuaire.dtd" >
<annuaire>
	<personne id="0">
		<nom>nom0</nom>
		<prenom>prenom0</prenom>
		<adresse>adresse0</adresse>
	</personne>
	<personne id="1">
		<nom>nom1</nom>
		<prenom>prenom1</prenom>
		<adresse>adresse1</adresse>
	</personne>
</annuaire>
Le DTD associé :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
 
<!ELEMENT annuaire (personne*)>
 
<!ELEMENT personne (nom,prenom,adresse)>
<!ATTLIST personne id CDATA #REQUIRED>
 
<!ELEMENT nom (#PCDATA) >
 
<!ELEMENT prenom (#PCDATA) >
 
<!ELEMENT adresse (#PCDATA)>
1. Si j'enlève la déclaration DOCTYPE du flux XML, le parsing se passe sans pb.

2. Avec le DOCTYPE le SAXParser lève l'exception suivante :
"Open Quote is expected for attribute "id" associated with an element type "personne""

Je ne comprend pas cette erreur de SAXParser, mon flux a l'air bien formé et valide, non ?
merci pour votre aide