cs_damien781
Messages postés79Date d'inscriptionlundi 13 septembre 2004StatutMembreDernière intervention13 décembre 2004
-
9 nov. 2004 à 20:49
chrifdma
Messages postés1Date d'inscriptionlundi 13 novembre 2000StatutMembreDernière intervention15 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!
cs_neodante
Messages postés2835Date d'inscriptionlundi 11 août 2003StatutModérateurDernière intervention16 décembre 200611 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 ???
@+
cs_damien781
Messages postés79Date d'inscriptionlundi 13 septembre 2004StatutMembreDernière intervention13 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
cs_neodante
Messages postés2835Date d'inscriptionlundi 11 août 2003StatutModérateurDernière intervention16 décembre 200611 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à !
@+
cs_damien781
Messages postés79Date d'inscriptionlundi 13 septembre 2004StatutMembreDernière intervention13 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......
cs_neodante
Messages postés2835Date d'inscriptionlundi 11 août 2003StatutModérateurDernière intervention16 décembre 200611 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 ...
@+
cs_damien781
Messages postés79Date d'inscriptionlundi 13 septembre 2004StatutMembreDernière intervention13 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:
//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! ...