[XML] parser avec SAX....

parser avec SAX.... [XML] - Java - Programmation

Marsh Posté le 17-02-2004 à 21:27:15    

Je vous expose mon probleme :
 
je veux parser un fichier XML qui a cette tete :
 

Code :
  1. <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
  2. <Album Chemin="C:\Albums\Album Vidéo\test" Date="17/02/2004" Titre="test" Type="Album Vidéo"/>


 
j'utilise donc SAX avec le code suivant (j'ai viré les try/catch vu ke ca ne me sort pas d'exceptions...:
 

Code :
  1. SAXParserFactory usine = SAXParserFactory.newInstance();
  2.       SAXParser analyseur = usine.newSAXParser();
  3.       this.dah = new DefaultAlbumHandler(f.getAbsolutePath());
  4.       analyseur.parse(f, dah);


 
la classe DefaultAlbumHandler :
 
 

Code :
  1. public void startDocument() {
  2.     System.out.println("on lit le fichier album" );
  3.   }
  4.   public void startElement(String uri, String local, String raw,
  5.                            Attributes attrs) throws SAXException {
  6.     System.out.println("on a trouvé un Element" );
  7. }


 
donc arrivé la il me dit qu'il lit le fichir album (donc on est rentré dans le document XML
 
Mais le probleme c'est qu'il me trouve pas d'element puisqu'il ne m'affiche pas "on a trouvé un élement"
 
Du coup je comprend pas puisqu'il y a bien un element dans mon fichier ! :pt1cable:  
 
Je croyais par ailleurs qu'il fallait utiliser xerces mais si il me dit qu'il rentre dans le document il devrait aussi trouver les elments ...?  
 
Merci de votre aide...


Message édité par spitagor le 18-02-2004 à 01:42:27
Reply

Marsh Posté le 17-02-2004 à 21:27:15   

Reply

Marsh Posté le 18-02-2004 à 10:05:42    

Si tu surchargeais d'autre methodes, comme warning(), error() ou fatalError() en affichant un piti message ?


---------------
Light is right
Reply

Marsh Posté le 18-02-2004 à 13:37:17    

effectivement j'ai une fatalError...
 
seulement je capte pas trop le contenu de l'erreur :
 
org.xml.sax.SAXParseException: Erreur de conversion de caractère : "Malformed UTF-8 char -- is an XML encoding declaration missing?" (le numéro de ligne peut être trop bas).
 
si quelqu'un a une idée... :whistle:  
 
le probleme c'est que dans la meme application je parse exactement le meme fichier avec la meme methode et il ne me met pas d'erreur ... :pt1cable:  c pour ca que je comprends pas...
 
 

Reply

Marsh Posté le 18-02-2004 à 13:48:42    

Le message d'erreur etait pourtant explicite!
 
Album Vidéo
 
Tu indiques que tu es en UTF-8, et tu utilise quelque chose qui n'est pas en UTF-8.
 
A+,


Message édité par gilou le 18-02-2004 à 13:50:55

---------------
There's more than what can be linked! --    Iyashikei Anime Forever!    --  AngularJS c'est un framework d'engulé!  --
Reply

Marsh Posté le 18-02-2004 à 13:51:19    

naaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaannnnn....  
 
du coup c koi l'encoding pour supporter les accents?


Message édité par spitagor le 18-02-2004 à 13:51:37
Reply

Marsh Posté le 18-02-2004 à 13:55:03    

j'essaie iso-8859-1 pour voir...
 
et ya aussi un truc que je comprends toujours pas c'est que je fais exactement pareil a un autre endroit dans mon application... et ca marche meme avec les accents...


Message édité par spitagor le 18-02-2004 à 13:56:24
Reply

Marsh Posté le 18-02-2004 à 13:56:24    

Ce serait plutot a toi de te poser la question: En quel encoding sont les données que je fournis au parser.
Parce que le seul qui puisse y repondre c'est toi: je ne sais pas d'ou viennent tes données.
A+,


---------------
There's more than what can be linked! --    Iyashikei Anime Forever!    --  AngularJS c'est un framework d'engulé!  --
Reply

Marsh Posté le 18-02-2004 à 14:02:11    

ben les données c'est des données textes en francais... du latin koi...  
 
je vais aller voir ca sur le site officiel...
 
merci de ton aide


Message édité par spitagor le 18-02-2004 à 14:02:32
Reply

Marsh Posté le 18-02-2004 à 14:31:14    

c'est bizarre ca me fait pareil avec iso8859-1... le meme type de message d'erreur :
 
 

Code :
  1. Unconvertible UTF-8 character beginning with 0xb8"


 
pourtant l'encoding pour pouvoir parser  les accents farncais c bien iso-8859-1  :(

Reply

Marsh Posté le 18-02-2004 à 14:47:19    

T'as essayé avec le nom tout en majuscule: ISO-8859-1 ??  
C'est ainsi que ca doit etre d'apres la spec XML.
A+,


Message édité par gilou le 18-02-2004 à 14:50:02

---------------
There's more than what can be linked! --    Iyashikei Anime Forever!    --  AngularJS c'est un framework d'engulé!  --
Reply

Marsh Posté le 18-02-2004 à 14:47:19   

Reply

Marsh Posté le 18-02-2004 à 15:12:55    

oui j'ai essayé mais ca me met toujours le meme message d'erreur...
 

Reply

Marsh Posté le 18-02-2004 à 16:54:36    

je crois que c'est un gros probleme en fait ! j'ai regardé partout sur le net et peu ou pas de solution !

Reply

Marsh Posté le 18-02-2004 à 20:12:49    

Le problème vient que tu n'es pas en ISO-latin-1 (iso-8859-1) partout dans ton appli ou ton XML je pense (0xb8 est un caractère en UTF-8). A vérifier .......

Reply

Marsh Posté le 19-02-2004 à 15:18:43    

ok.... mais honnetement je trouve un truc vraiment incomprehensible : j'ai STRICTEMENT et EXACTEMENT le MEME code dans une autre classe de mon Appli et le MEME fichier est parsé nikel ! j'arrive a trouver des elements dedans etc...
 
ca me soule j'ai jamais vu ca... si ca continue je vais me pendre !!!
 
 :(  Pourtant je cherche a comprendre mais y doit y avoir quelque chose qui m'echappe la... :pt1cable:
 
 
PS : pour info j'ai essayé de convertir toutes mes String en UTF-8 via ca :

Code :
  1. album.setAttribute("Date", URLEncoder.encode(dateString,"UTF-8" ));


 
Mais j'ai toujours la meme SAXParseExcpetion  :  

Code :
  1. org.xml.sax.SAXParseException: Erreur de conversion de caractère : "Unconvertible UTF-8 character beginning with 0xff" (le numéro de ligne peut être trop bas).


Message édité par spitagor le 19-02-2004 à 15:23:54
Reply

Marsh Posté le 19-02-2004 à 15:28:56    

c'est pas plutot le \A qui merdoie?

Reply

Marsh Posté le 19-02-2004 à 17:44:22    

anapajari a écrit :

c'est pas plutot le \A qui merdoie?


Mais oui!
Faut faire vachement gaffe aux anti-slashs dans les XML.
Regarde de ce coté la, faut bien configurer la parseur.

Reply

Marsh Posté le 19-02-2004 à 19:43:11    

??? a ce propos j'utilise un SAXParser .. il vaut mieux utiliser Xerces? pasque finalement je me demande a koi sert xerces vu que on peut parser avec SAXParser...
 
sinon pour le \ je vais voir comment configurer le Parser... si c'est ca je ne saurais comment vous remercier.. !!!
 
edit : c'est le Handler qu'il faut configurer ou le parseur lui meme? pasque la je regarde les mrthodes et je vois pas grand chose...


Message édité par spitagor le 19-02-2004 à 19:47:47
Reply

Marsh Posté le 19-02-2004 à 21:14:53    

yo c spi a écrit :


Mais oui!
Faut faire vachement gaffe aux anti-slashs dans les XML.
Regarde de ce coté la, faut bien configurer la parseur.

:non:  :non:  :non:  
En xml, un \ est un \.
A+,


---------------
There's more than what can be linked! --    Iyashikei Anime Forever!    --  AngularJS c'est un framework d'engulé!  --
Reply

Marsh Posté le 20-02-2004 à 00:22:28    

Je confirme ... ca marche tres bien en UTF 8 !!! pas de probleme a priori meme avec les accents...
 
Mais le truc fou  :fou:  c'est que je fais le meme traitement a un autre endorit de mon appli.... les meme parametres passés a mon Handler etc... je suis SUR que c'est le meme code j'ai meme refait un copier/coller....
 
Vous avez deja vu ca  du code qui marche a un endroit de l'appli et qui ne marche pas a un autre endroit ?  :pt1cable:  
 
Je parse un fichier dans une classe, pas d'exceptions :)  
 
Je parse ce meme fichier dans une autre classe (meme code pour ceux qui auraient pas suivi), fatalError :( ... :fou:  
 
c'est décidé je passe cette nuit et je me pends :fou:  
 

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed