Parser du XML en sauver dans une liste

cs_damien781 Messages postés 79 Date d'inscription lundi 13 septembre 2004 Statut Membre Dernière intervention 13 décembre 2004 - 9 nov. 2004 à 20:49
chrifdma Messages postés 1 Date d'inscription lundi 13 novembre 2000 Statut Membre Dernière intervention 15 mai 2005 - 15 mai 2005 à 20:40
Hello,

J'ai un fichier XML sous cette forme (pour implémenter une logique plus simple, cette forme peut etre modifier)
//dans un tableau/liste ce qui se trouve ci dessous
<mesPara>
<name>Moteur</name>
<type>CSL123-4</type>
<out>true

<num>32.232</num>
1232.23 kg

<com>yes is it!</com>
etc...
</mesPara>
//dans un autre tableau
<mesPara>
...

Le nombre de para est aléatoire et je peux avoir plusieurs blocs <mesPara>
Pour sauvegarder tout ceci dans un tableau, les paramètrs de mespara donc 1 arraylist (ou autre) par mesPara!!
-Il me faut un parser, Sax ou autre?
-Une Arraylist semble une bonne idée??

Quelqu'un a une bonne idée et rapide à implémenter? Ou déjà implémenté???
Merci @+ les progs!

10 réponses

cs_neodante Messages postés 2835 Date d'inscription lundi 11 août 2003 Statut Modérateur Dernière intervention 16 décembre 2006 11
10 nov. 2004 à 08:42
:big) Neodante :big)

Effectivement tu peux utiliser SAX (parseur évènementiel qui ne construit pas d'arbre ...) ou DOM (parseur avec une structure en arbre, permet aussi de modifier un fichier).
Je te conseillerais d'utiliser SAX dans ton cas présent, c'est plus simple et tu ne semble pas avoir besoin d'une structure ...
Regarde les sources du site ou sinon si vraiment tu veux devenir un pro de SAX/DOM, regarde le 'J2EE Tutorial' de java.sun.com ... attention juste la partie XML pas la partie J2EE pur ! ;-)
Pour le ArrayList ... pourquoi pas ???
@+

[Responsable www.neogamedev.com]
0
cs_damien781 Messages postés 79 Date d'inscription lundi 13 septembre 2004 Statut Membre Dernière intervention 13 décembre 2004
10 nov. 2004 à 09:06
merci neodante ! on va voir tout ça !!
Juste une question a part.. dans le cas ou j'ai écrit un arbre a l'aide de DOM... pour le restitué, une utilisation de SAX n'est pas possible étant donné que j'ai besoin d'une structure! Il faut que je lise avec un concept DOM et tout est ok après?
A+ et merchi
0
cs_neodante Messages postés 2835 Date d'inscription lundi 11 août 2003 Statut Modérateur Dernière intervention 16 décembre 2006 11
10 nov. 2004 à 18:57
:big) Neodante :big)

J'ai po tout compris à ta question !!! ;-)
SAX et DOM sont 2 parseurs XML, ils parsent de la même façon que n'importe quel parseur SAX et DOM du marché c'est à dire :
- SAX envoie des évènements au programme à chaque fois qu'il rencontre quelque chose en rapport avec la structure de ton doc : exemple : Début d'un élément, Valeur d'un élément, balise de fin d'un élément, ... avec évidemment des paramètres par exemple le nom de la balise !!!!
- DOM construit un arbre en mémoire (par conséquent l'intégralité d'un fichier XML se retrouve en mémoire !! Attention à ne pas avoir un trop gros fichier sinon la mémoire se retrouve vite saturé !!! C'est dans ce dernier cas que des fois on est obligé d'utiliser SAX sinon 'out of memory' garantit !). Une fois que tu as un arbre (si tu n'en as pas tu peux en construire un à partir de rien afin de créer un document XML...) tu peux modifier ce que tu veux dedans. Et enfin la différence par rapport à SAX : tu peux écrire ton arbre dans un fichier ... logique puisque tu as l'arbre XML en entier !
Voilà !
@+

[Responsable www.neogamedev.com]
0
cs_damien781 Messages postés 79 Date d'inscription lundi 13 septembre 2004 Statut Membre Dernière intervention 13 décembre 2004
11 nov. 2004 à 10:13
Merci pour tes infos! j'y vois plus clair ! A+
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_damien781 Messages postés 79 Date d'inscription lundi 13 septembre 2004 Statut Membre Dernière intervention 13 décembre 2004
12 nov. 2004 à 12:10
salut, voilà j'ai parsé mon fichier XML avec SAX. j'ai également créer ma DTD mais maintenant, comment je fais pour retourné les valeur des elements qui m'interesse? donc j'ai perser le fichier il se met en quelques sorte en mémoire... en 2 mots comment je fais pour retourner les elements qui m'interesse afin de pouvoir les utiliser? pouvoir les retourner dans des fonctions par exemple ou autre? (car mon fichier xml contient des valeurs que je dois utiliser par la suite)
Il faut que je créer un méthode (dans le meme fichier que la méthode ParseurXML).
Tu comprends ce que j'ai envie de faire???
A+! et merci......
0
cs_neodante Messages postés 2835 Date d'inscription lundi 11 août 2003 Statut Modérateur Dernière intervention 16 décembre 2006 11
12 nov. 2004 à 13:18
:big) Neodante :big)

AS-tu regardé le J2EE Tutorial (télécharge le sur le site de SUN !) ??? Regarde dedans la partie consacré à SAX uniquement ... le tut te fait faire une appli complète mais seul les premières pages (10 min à lire) répondront à ta question ...
Je te conseille de lire ce tutorial, cela n'est pas long et devrait t'apporter beaucoup de réponses et te faire gagner beaucoup de temps pas la suite ...
@+

Voici le lien du J2EE Tutorial :
- HTML : http://java.sun.com/j2ee/1.4/docs/tutorial/doc/
- PDF : http://java.sun.com/j2ee/1.4/docs/tutorial/doc/J2EETutorial.pdf

[Responsable www.neogamedev.com]
0
cs_damien781 Messages postés 79 Date d'inscription lundi 13 septembre 2004 Statut Membre Dernière intervention 13 décembre 2004
14 nov. 2004 à 10:03
Voilà! ca marche mais j'ai fait avec dom et ca me donne une arborescence je préfère finalemenent donc voici comment la sauvegarde en mémoire c'est faite:

DocumentBuilderFactory doc = DocumentBuilderFactory.newInstance();
DocumentBuilder builder = doc.newDocumentBuilder();

Document leFichierXML = builder.parse(new File ("D:/leFichierXML .xml"));

//ensuite je vais a la racine
Node rac = leFichierXML.getDocumentElement();
//puis pour repertorier les "mespara" (voir 1iere post,
//exemple de fichier XML)

NodeList listMesPara = rac.getChildNodes(); //prends la list des
//noeud fils de LESPARA () voir XML ci-dessous!

voilà mais quand je veux afficher et naviger dans mon fichier en mémoire il y a tout le fichier qui s'affiche... et pas un liste de mes nods fils de LESPARA(qui est la racine)en utilisant getChildNodes.
avec System.out.println(listMesPara); donc tout s'afficher (toute la représentation en mémoire soit tout les fichier XML...) et non pas la liste des fils du noeud racine en question!!! snif...
Pourquoi ca marche pas? quelle est la solution. j'aimerais avoir dans une liste par exemple tout les monPara() (en repertoriant simplement les fils du noeux racine LESPARA), par exemple si j'en ai 3 je devrais avoir [mesPara, mesPara, mesPara], voilà.. puis ensuite je voudrais avois les nods fils de mesPara (qui sera une liste de tout mes paramètres!!)

Tu comprends ou je veux en venir!! Si j'arrive a faire ca rapidement ca serait parfait!! Ca n'a pas l'air sorcier! ...

je te remercie.. A+

PS: un p'tit fichier xml (exemple):
<LESPARA>

<mesPara>
<name>Moteur</name>
<type>CSL123-4</type>
<out>true

< num>32.232</num>
1232.23 kg

<com>yes is it!</com>
etc...
</mesPara>
//autre liste de caractéristique!!
<mesPara>
...

</LESPARA>
0
cs_damien781 Messages postés 79 Date d'inscription lundi 13 septembre 2004 Statut Membre Dernière intervention 13 décembre 2004
14 nov. 2004 à 17:43
ben non...... C'est bon j'ai résolu tout seul durant mon dimanche :-)
A+ pour une futur question!!
0
cs_neodante Messages postés 2835 Date d'inscription lundi 11 août 2003 Statut Modérateur Dernière intervention 16 décembre 2006 11
14 nov. 2004 à 17:46
:big) Neodante :big)

lol
@+

[Responsable www.neogamedev.com]
0
chrifdma Messages postés 1 Date d'inscription lundi 13 novembre 2000 Statut Membre Dernière intervention 15 mai 2005
15 mai 2005 à 20:40
bonjour tout le monde
j'ai besoins d'un aide (le comment: JBuilder et Xquery)
0
Rejoignez-nous