[JAVA] Question simple sur l'analyse XML

Question simple sur l'analyse XML [JAVA] - Java - Programmation

Marsh Posté le 15-12-2003 à 23:25:28    

Bonjour,
je débute en java, et je désire analyser un document xml
 
J'ai acheté un gros bouquin, qui parle un peu de ca, mais ca reste trés compliqué et je ne trouve pas l'information que je cherche.
 
voici un morceau du programme que j'ai réalisé :
 
 

Code :
  1. StringBuffer stringBuffer = new StringBuffer(8192);
  2.    while(charBuffer[0]!='\0')
  3.    {
  4.     stringBuffer.append(charBuffer[0]);
  5.     in.read(charBuffer,0,1);
  6.    }
  7.    /* Analyse du message XML reçu. */
  8.    //stringBuffer.toString()+"\n";
  9.    try
  10.    {
  11.     DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
  12.     DocumentBuilder builder = factory.newDocumentBuilder();
  13.     Document doc = builder.parse(stringBuffer.toString());
  14.    }
  15.    catch(IOException exception)
  16.    {
  17.     System.out.print("[Erreur d'analyse XML] "+exception);
  18.    }
  19.    catch(ParserConfigurationException exception)
  20.    {
  21.     System.out.print("[Erreur d'analyse XML] "+exception);
  22.    }
  23.    catch(SAXException exception)
  24.    {
  25.     System.out.print("[Erreur d'analyse XML] "+exception);
  26.    }


 
La compilation marche, mais l'execution lance un exception, simplement a cause de la ligne :
builder.parse(stringBuffer.toString());
Je ne sais pas comment transformer la variable stringBuffer.toString() pour qu'elle puisse etre compréhensible par builder.parse.
 
Merci beaucoup pour votre aide :)
 
Ben.

Reply

Marsh Posté le 15-12-2003 à 23:25:28   

Reply

Marsh Posté le 15-12-2003 à 23:55:43    

y a quoi dans ton stringbuffer ? le document XML ou le chemin vers le fichier ? parce que la méthode parse(String) c'est le chemin qu'il faut lui passer ...
 
sinon ta boucle du début est un peu foireuse ...


---------------
ma vie, mon oeuvre - HomePlayer
Reply

Marsh Posté le 15-12-2003 à 23:56:39    

si t'as un stream in qui contient ton doc XML et que tu veux le parser, t'as juste à faire builder.parse(in)


---------------
ma vie, mon oeuvre - HomePlayer
Reply

Marsh Posté le 16-12-2003 à 12:53:05    

Euhhh je comprends pas trop...
Dans mon stringbuffer, j'ai le document xml que j'ai receptionné.
je peux l'afficher en faisant system.out.print(stringbuffer.toString()) et là je voie bien mon document xml.
Seulement, j'arrive pas a l'analyser...
voici un exemple plus étendu de mon programme :
 

Code :
  1. public class YoopsClient extends Thread {
  2. public String pseudo; // null si non identifié
  3. public int age;
  4. public String ville;
  5. private Thread unProcessus;
  6. public Socket socket;
  7. private YoopsServeur Serveur;
  8. protected BufferedReader in;
  9. protected PrintWriter out;
  10. public YoopsClient(YoopsServeur Serveur,Socket socket)
  11. {
  12.  this.Serveur = Serveur;
  13.  this.socket = socket;
  14.  try
  15.  {
  16.   in = new BufferedReader(new InputStreamReader(socket.getInputStream()));
  17.   out = new PrintWriter(socket.getOutputStream(),true);
  18.  }
  19.  catch(IOException ioe)
  20.  {
  21.   killClient();
  22.   System.out.print("[erreur] : "+socket.getRemoteSocketAddress()+" : Echec de connexion.\n" );
  23.  }
  24. }
  25. public void run()
  26. {
  27.  try
  28.  {
  29.   char charBuffer[] = new char[1];
  30.   while(in.read(charBuffer,0,1)!=-1)
  31.   {
  32.    StringBuffer stringBuffer = new StringBuffer(8192);
  33.    while(charBuffer[0]!='\0')
  34.    {
  35.     stringBuffer.append(charBuffer[0]);
  36.     in.read(charBuffer,0,1);
  37.    }
  38.    /* Analyse du message XML reçu. */
  39.    //stringBuffer.toString()+"\n";
  40.    try
  41.    {
  42.     DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
  43.     DocumentBuilder builder = factory.newDocumentBuilder();
  44.     Document doc = builder.parse(stringBuffer.toString());
  45.    }
  46.    catch(IOException exception)
  47.    {
  48.     System.out.print("[Erreur d'analyse XML] "+exception);
  49.    }
  50.    catch(ParserConfigurationException exception)
  51.    {
  52.     System.out.print("[Erreur d'analyse XML] "+exception);
  53.    }
  54.    catch(SAXException exception)
  55.    {
  56.     System.out.print("[Erreur d'analyse XML] "+exception);
  57.    }
  58. ...


 
Merci pour votre aide, c'est super sympa !


Message édité par yoops le 16-12-2003 à 12:53:31
Reply

Marsh Posté le 16-12-2003 à 16:06:26    

t'as lu mon post ???
 
http://xml.apache.org/xerces2-j/ja [...] ng.String)
 

Citation :

public Document parse(java.lang.String uri)
               throws SAXException,
                      java.io.IOExceptionParse the content of the given URI as an XML document and return a new DOM Document object.
Parameters:
uri - The location of the content to be parsed.
Returns:
A new DOM Document object.


 
t'utilises pas la bonne méthode !!! c'est pas sous la forme d'une chaine qu'il faut parser ton xml. La méthode parse avec uen chaine en paramêtre, la chaine doit contenir le chemin vers le fichier (ex : c:\toto\tata.xml)
 
tu peux dircetement parser ton xml à partir du flux :  
 

Code :
  1. builder.parse(in);


Message édité par benou le 16-12-2003 à 16:07:34

---------------
ma vie, mon oeuvre - HomePlayer
Reply

Marsh Posté le 16-12-2003 à 18:20:29    

Oui, j'ai essayé ca, mais j'obtiens le message d'erreur suivant à la compilation :
 
YoopsClient.java:75 cannot resolve symbol
symbol : method parse (java.io.BufferedReader)
localtion : class javax.xml.parsers.DocumentBuilder
Document doc = builder.parse(in);
                               ^
pourtant, in est bien un flux d'entrée
 
Merci à toi


Message édité par yoops le 16-12-2003 à 18:21:18
Reply

Marsh Posté le 16-12-2003 à 18:25:45    

Non, c'est pas un flux (Stream), c'est un Reader :o
Ton Reader, tu l'as construit à partir de socket.getInputStream(). Passe carrément cet InputStream à ton parser pis vala.


---------------
Everyone thinks of changing the world, but no one thinks of changing himself  |  It is the peculiar quality of a fool to perceive the faults of others and to forget his own  |  Early clumsiness is not a verdict, it’s an essential ingredient.
Reply

Marsh Posté le 16-12-2003 à 18:31:09    

ouais, j'avais pas fait attention à ce détail ...


---------------
ma vie, mon oeuvre - HomePlayer
Reply

Marsh Posté le 16-12-2003 à 19:02:03    

je tente, mais j'ai toujours des soucis, j'ai besoin de plus de précision ;)
 
je le place ou builder.parse(socket.getInputStream()) ?

Reply

Marsh Posté le 16-12-2003 à 19:36:45    

DANS TON CUL :fou:
 
 
(lis la javadoc, toute la précision que tu veux s'y retrouve :o)


Message édité par the real moins moins le 16-12-2003 à 19:39:25

---------------
Hey toi, tu veux acheter des minifigurines Lego, non ?
Reply

Marsh Posté le 16-12-2003 à 19:36:45   

Reply

Marsh Posté le 16-12-2003 à 19:46:43    

Yoops a écrit :

je tente, mais j'ai toujours des soucis, j'ai besoin de plus de précision ;)
 
je le place ou builder.parse(socket.getInputStream()) ?


tu vas peut être un peu réfléchir par toi même là quand même nan ? mmmm ...


Message édité par benou le 16-12-2003 à 19:52:29

---------------
ma vie, mon oeuvre - HomePlayer
Reply

Marsh Posté le 16-12-2003 à 19:49:14    

ca vous parrait certainement super simple pr vous, mais pour moi non...

Reply

Marsh Posté le 16-12-2003 à 19:52:09    

ce qui me parait simple c'est de demander aux autres de chercher à sa place. T'as eu toutes les infos, maintenant si tu peux pas t'en sortir avec ca, on y peut rien : on peut pas te dire quoi à chaque fois que le compilo gueule ...
 
 


---------------
ma vie, mon oeuvre - HomePlayer
Reply

Marsh Posté le 16-12-2003 à 19:56:50    

j'm'attendais a plus d'aimabilité comme même ! je pose une question, et vous m'avez donné des morceaux de réponse.
J'suis pas un pro du java moi, j'essaye d'apprendre.
 
J'abandonne,
ici pour poser une question, il faut déja être un pro du java.
 
Merci comme même de m'avoir consacré un peu de temps.

Reply

Marsh Posté le 16-12-2003 à 19:58:16    

"quand même".
 
ps: http://java.sun.com/j2se/1.4.2/docs/api/index.html bookmark ça, ça pourra t'etre utile.


---------------
Hey toi, tu veux acheter des minifigurines Lego, non ?
Reply

Marsh Posté le 16-12-2003 à 21:55:37    

si t'as des questions pose les. Si ce que tu veux c'est qu'on te disent où placer chacun de tes bouts de code, passe ton chemin [:spamafote]


---------------
ma vie, mon oeuvre - HomePlayer
Reply

Sujets relatifs:

Leave a Replay

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