Parser une structure XML en Java

Parser une structure XML en Java - Java - Programmation

Marsh Posté le 21-07-2004 à 15:16:58    

Bonjour
Je cherche à ressortir des information d'une structure XML, en Java. La structure est très simple, mais grosse (autrement dit, plusieurs milliers d'éléments, de 2 types différents (soit 3 soit 10 attributs).
Je cherche à faire cela de la manière la plus simple et la plus efficace possible.
J'ai bien vu qq post parlant plus ou moins de cela, mais rien de bien précis.
D'avance merci

Reply

Marsh Posté le 21-07-2004 à 15:16:58   

Reply

Marsh Posté le 21-07-2004 à 16:19:49    

regardes les exemples d'utilisation de SAX

Reply

Marsh Posté le 21-07-2004 à 17:28:44    

Merci! Je regarde cela
Si qqn connait un bon tutorial ou fichier d'exemple...

Reply

Marsh Posté le 22-07-2004 à 09:29:30    

Savez-vous pourquoi le handler est si compliqué? J'ai une structure très simple de la forme:
<my_struct>
 <obj1>
  <elems>
   <elem id="1" x="22" y="15" type="1" />
   <elem id="2" x="3" y="21" type="1" />
   <elem id="3" x="7" y="14" type="1" />
   <elem id="4" x="34" y="12" type="1" />
  </elems>
 
 </obj1>
</my_struct>

 
Et j'aimerais simplement pouvoir récupérer x,y et type, en disant:
qqch du style:
xytype return_val= get (elem, id, 1) ou qqch du style.
 
Si qqn arrive à m'aider, directement ou indirectement. C'est malheureusement plutôt urgent.


Message édité par korben le 22-07-2004 à 09:29:57
Reply

Marsh Posté le 22-07-2004 à 11:02:47    

 Si le truc que tu as à parser ne peut pas tenir en mémoire,  
tu devrais utiliser un parser SAX.(Mais ça marche avec des flux XML)
  Eventuellement, si tu veux filtrer et récupérer que quelques données sur tout ton flux, tu peux utiliser STX (joost).
  Par contre si tes données rentrent en mémoire, il vaut mieux utiliser DOM pou JDOM.
 
Voilà, je sais pas trop si ça peut t'aider.

Reply

Marsh Posté le 22-07-2004 à 15:19:06    

Oui, tout à fait. Mes données ne peuvent pas rentrer en mémoire. Le problème, c'est que là, vu de l'extérieur, SAX me semble bien compliqué, sachant que je ne veux pas afficher tout le contenu d'une fichier XML, mais simplement rechercher des information dedans. Et je suis donc surpris qu'aucune méthode n'existe pour le faire en java, directement, sans devoir écrire 1000 lignes de codes.
Si qqn a une idée...

Reply

Marsh Posté le 22-07-2004 à 22:16:24    

ben t'as pas 50.000 possibilités:
- soit tu fais du sax à la main si ton doc est *vraiment* enorme
- tu peux essayer jdom ou dom4j qui effectivement proposent une representation objet de ton doc, mais gerent mieux les gros docs que du dom standard, je crois (jamais pu vérifier par moi meme)
- sinon t'as xpp3 qui il me semble est un genre d'hybride entre les deux.  
 
moi à ta place j'essaierais avec du bete dom, et le jour ou ça casse vraiment tente xpp3.
le sax c'est pour les masos ou les chomeurs.
 


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

Marsh Posté le 22-07-2004 à 23:16:19    

-- > et ta mère elle utilise SAX ?
 
et pis d'abord, je vois pas pourquoi DOM boufferait de la mémoire, ils ont des implémentation de daube ou quoi ?
 
korben > bah tu prends DOM, c'est en standard dans le JDK, tu te fais un petit builder en static comme ça il sera encore là la prochaine fois que tu en aura besoin, puis tu parcours l'arbre XML avec les fonctions idoines.

Reply

Marsh Posté le 22-07-2004 à 23:32:14    

(parce que ça charge tout le doc ds le modèle d'un coup)


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

Marsh Posté le 22-07-2004 à 23:39:14    

ben c'est un tord, la spec ne l'oblige pas.

Reply

Marsh Posté le 22-07-2004 à 23:39:14   

Reply

Marsh Posté le 23-07-2004 à 09:35:41    

entre nous "plusieurs milliers d'éléments"  
dans ce style :  
<elem id="1" x="22" y="15" type="1" />
 
c'est pas ca qui va saturer quoi que ce soit :lol:  
utilises DOM ne te prends pas la tête  

Reply

Sujets relatifs:

Leave a Replay

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