Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
2928 connectés 

  FORUM HardWare.fr
  Programmation
  Java

  [JAVA] Question simple sur l'analyse XML

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[JAVA] Question simple sur l'analyse XML

n°591448
yoops
Posté le 15-12-2003 à 23:25:28  profilanswer
 

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.

mood
Publicité
Posté le 15-12-2003 à 23:25:28  profilanswer
 

n°591469
benou
Posté le 15-12-2003 à 23:55:43  profilanswer
 

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
n°591470
benou
Posté le 15-12-2003 à 23:56:39  profilanswer
 

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
n°591723
yoops
Posté le 16-12-2003 à 12:53:05  profilanswer
 

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
n°591949
benou
Posté le 16-12-2003 à 16:06:26  profilanswer
 

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
n°592050
yoops
Posté le 16-12-2003 à 18:20:29  profilanswer
 

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
n°592052
Taiche
(╯°□°)╯︵ ┻━┻
Posté le 16-12-2003 à 18:25:45  profilanswer
 

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.
n°592054
benou
Posté le 16-12-2003 à 18:31:09  profilanswer
 

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


---------------
ma vie, mon oeuvre - HomePlayer
n°592069
yoops
Posté le 16-12-2003 à 19:02:03  profilanswer
 

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

n°592085
the real m​oins moins
Posté le 16-12-2003 à 19:36:45  profilanswer
 

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 ?
mood
Publicité
Posté le 16-12-2003 à 19:36:45  profilanswer
 

n°592094
benou
Posté le 16-12-2003 à 19:46:43  profilanswer
 

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
n°592096
yoops
Posté le 16-12-2003 à 19:49:14  profilanswer
 

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

n°592098
benou
Posté le 16-12-2003 à 19:52:09  profilanswer
 

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
n°592103
yoops
Posté le 16-12-2003 à 19:56:50  profilanswer
 

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.

n°592105
the real m​oins moins
Posté le 16-12-2003 à 19:58:16  profilanswer
 

"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 ?
n°592180
benou
Posté le 16-12-2003 à 21:55:37  profilanswer
 

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

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  Java

  [JAVA] Question simple sur l'analyse XML

 

Sujets relatifs
Interet du XML par rapport à une BDD[Java] Linux, JInternalFrame, application GTK comme Gaim...
[Java] Evaluer le temps d'exécution d'un fonction.[XML] la fct position() me retourne tjs 0 ...
Comment faire en java pour....[JAVA] transformer ResultSet en Vector d'Array
Portail Web en "Java" par quoi commencerexplication sur calculatrice en java
[C++, C#, Java] constructeurs, attention au code généré par le compilo[C++/DLL] Question existentiellement conceptuelle : DLL "persistante"
Plus de sujets relatifs à : [JAVA] Question simple sur l'analyse XML


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR