Iterator - Java - Programmation
Marsh Posté le 02-05-2005 à 17:07:38
getChildren renvoie une list, donc getChildren().size ()
Marsh Posté le 02-05-2005 à 17:11:16
getChildren() ne renvoie que les descendants de premier rang (la première generation si tu veux). moi ce qui m'interresse c'est tout les descendants. J'ai pensé a faire simplement une boucle while et utiliser un compteur mais c'est un peut brouillon.
Marsh Posté le 02-05-2005 à 17:13:36
n'est t'il pas possible de passer de la classe iterator à la classe collection.
Marsh Posté le 02-05-2005 à 17:17:16
Tu fais un parcours d'arbres, et tu comptes
Marsh Posté le 02-05-2005 à 17:25:50
c'est ce que je fais avec l'iterteur mais c'est brouillon. parceque par la suite j'utilise la valeur pour un JPrgressBar et je relance une autre boucle
Marsh Posté le 02-05-2005 à 17:28:47
de plus les fichier XML que je parcours sont extrement grand (en moyenne 80 Mo)
Marsh Posté le 03-05-2005 à 08:59:32
du XML extrêmement grand ce n'est pas 80Mo
et avec une requête XPath ? tu ramènes une NodeList et tu prends sa taille.
edit: et tu fais du DOM avec un XML pareil ? ou tu préparses en SAX ?
Marsh Posté le 03-05-2005 à 09:18:23
j'ai une question : qui a eu l'idée de cracher 80Mo de XML ? un stagiaire ? Il ne s'est pas posé la question du coût en temps machine et mémoire d'un truc pareil ?
D'autre part, sachant que le monstre fait 80 Mo, qui a eu l'idée d'utiliser DOM pour tronçonner la chose ? un vendeur de mémoire ? de processeur ? Dell ?
Marsh Posté le 03-05-2005 à 09:27:13
c'est un fichier XML utilisé en natif pour faire du stockage de données. J'utilise JDom pour effectuer mes requêtes, j'utilise le parser SAX de JDom pour lire le fichier.
De plus je dis bien que mon fichier fait en moyenne 80 Mo, elle peut atteindre 140 Mo. Ce sont des fichiers professionnels! (En resumé c'est la configuration global des equipements Nortel 3G du réseau d'accès d'Orange)
Marsh Posté le 03-05-2005 à 09:31:20
80Mo ce n'est pas nécessairement craché par des stagiaires... une administration française m'a fait jouer avec des XML à contenu législatif oscillant entre 500 et 600MB le fichier.
(et en plus, les encoding étaient foireux)
faire du DOM avec c'est suicidaire, il faut tout tronçonner en SAX (une fois les caractères mal encodés corrigés) en segments de taille raisonnable et ensuite passer en DOM si besoin est.
Marsh Posté le 03-05-2005 à 09:33:25
nraynaud a écrit : j'ai une question : qui a eu l'idée de cracher 80Mo de XML ? un stagiaire ? Il ne s'est pas posé la question du coût en temps machine et mémoire d'un truc pareil ? |
J'estime que ma question est suffisamment precise pour que tu me dise si oui ou non tu as un semblant de solution. Tes commentaires deplaces tu peux serieusement te les garder. Le comble c'est que les personnes comme toi ne savent pas tous bêtement poser les questions pour connaître le contexte mais cracher tes commentaires venimeuses qui apporte plus l'envie d'etre injurieux.
A l'avenir mache bien tes mots avant de me les cracher
Marsh Posté le 03-05-2005 à 09:35:18
tatou42 a écrit : De plus je dis bien que mon fichier fait en moyenne 80 Mo, elle peut atteindre 140 Mo. Ce sont des fichiers professionnels! (En resumé c'est la configuration global des equipements Nortel 3G du réseau d'accès d'Orange) |
ce n'est pas bien malin de la part de Nortel de stocker autant dans du XML... derrière il faut se palucher du code pour gérer ça et c'est bien plus lent que qques XML spécialisés et plus petits.
attention de ne pas tomber dans le travers de tout stocker en XML non plus, j'ai un serveur qui peine à faire du web dynamique avec Novell exteNd où tout est XML couplé à des XSL. Bondiou que ça rame avec un user.
Marsh Posté le 03-05-2005 à 09:39:52
dans le context, XML n'est utilisé que pour les echanges. Sinon je ne sais absolument pas comment est fait la base de donnée. D'ailleur ce n'est pas mon souci. par ailleur on dispose deja d'outil nortel parsant c'est fichier. Elle met à peux près 1 minute 30 pour l'ouvrir. Avec mon outil j'arrive à faire l'equivalent.
Marsh Posté le 03-05-2005 à 09:44:07
tatou42 a écrit : Le comble c'est que les personnes comme toi ne savent pas tous bêtement poser les questions pour connaître le contexte mais cracher tes commentaires venimeuses qui apporte plus l'envie d'etre injurieux. |
mon post contient exclusivement des questions.
Il traduit une certaine exaspération face à ce genre de comportement qui consiste à faire n'importe quoi sans un minimum de recul. En particulier quand il faut marcher sur des oeufs à cause des contraintes techniques. 80Mo de XML, ça n'a rien d'annodin et il vaut mieux éviter de s'en vanter si on peut pas l'éviter.
Maintenant, des réponses, tu en as : tu tappes dedans en SAX, tu fais surtout gaffe à jetter à la poubelle (à ne pas les garder en mémoire) toutes les informations inutiles au fur-et-à-mesure du passage sur le fichier. Bref, la réponse d'Elianor. Et tu évites absolument DOM car tu vas charger en mémoire tout le fichier sinon.
Mais commence par voir si tu ne peux pas obtenir tes données sous un format plus intelligent.
Marsh Posté le 03-05-2005 à 09:44:26
je vous rappel ma question, j'ai une methode me renvoyant un iterateur, je voudrais connaitre la taille de la List d'objet sur lequelle il pointe sans avoir a faire utiliser une boucle ou un compteur.
Marsh Posté le 03-05-2005 à 09:45:45
on peut pas, un Iterator c'est du traitement en flux, pas en collection.
Marsh Posté le 03-05-2005 à 09:46:11
mais c'est de toutes façons complètement non-pertinent dans ton cas.
Marsh Posté le 03-05-2005 à 10:04:50
nraynaud a écrit : mon post contient exclusivement des questions. |
Je comprends absoluement pas en quoi poser une question technique c'est se vanter des difficultés que l'on rencontre.
Tu ne reponds toujours pas à ma question de depart qui est la suivante:
Citation : comment puis je obtenir la taille d'une Liste pointer par un iterateur sachant que l'on ne possède que l'iterateur? |
Maintenant si tu n'es pas capable de comprendre la question et forcement d'y repondre, ce n'est pas la peine de repondre avec des commentaires qui n'ont aucun interet ni pour moi ni pour les autres d'ailleurs.
De plus les phrases du genre:
Citation : Il traduit une certaine exaspération face à ce genre de comportement qui consiste à faire n'importe quoi sans un minimum de recul |
et quelques lignes plus loin, tu te permets de parler de vantardise. Tu devrais prendre le temps de relire tes phrases pour savoir qui est le plus vantard de nous 2.
Sur ce j'espere que dorenavant tes reponses a mes questions seront constructives sinon ce n'est pas la peine de me faire part de tes etats d'ame qui me laisse indifferent.
Marsh Posté le 03-05-2005 à 10:12:27
tatou42 a écrit : Sur ce j'espere que dorenavant tes reponses a mes questions seront constructives |
écoute petit boulet, si tu sortais tes doigts du cul, lisait un peu et utilisait ton cerveau, tu ne serais jamais venu poser ta question ici. J'ai pas eu besoin d'agresser qui que ce soit pour comprendre la différenc d'approche entre un iterator et une collection.
*personne* ne te doit la moindre réponse ici, tu en as obtenu une pertinente en 2 posts, des explications par la suite et des réflexions un peu plus poussées sur l'utilisation du XML.
Maintenant, il est manifeste que tu es incapable de lever la tête du guidon et de réfléchir, je te laisse donc, et je continue mes remarques pour d'autres personnes que je suis convaincu que ça intéresse (si elles n'intéresse personne, bah tant pis, ça me fait plaisir de les poster).
Marsh Posté le 03-05-2005 à 10:35:21
peace les gens ...
et nraynaud, tu n'y as peut être pas encore été confronté, mais le XML est utilisé aussi pour faire des échanges de données, parfois volumineuses ... C'est un format qui en vaut un autre. Ce serait pas forcément beaucoup plus "utilisable" dans un autre format (binaire ou autre) étant donné que c'est de la donnée brute à intégrer.
Me semble qu'ici on se tape 2Go de xml tous les soirs dans le cadre d'un gros projet (niveau européen), ben ca se fait ...
Bien sûr, c'est une contrainte à prendre en compte dès le départ, mais c'est praticable. C'est aps un obstacle en soit, et d'autres solutions ne seraient pas forcément meilleures ...
Marsh Posté le 03-05-2005 à 10:41:35
c'est con, il faut des données navigables dans la mesure du possible. Il faut des représentations plus légères. et Surtout qui ne nécessient pas un parser aussi complexe qu'un parser XML.
Marsh Posté le 03-05-2005 à 10:44:35
Surtout que c'est pas à Nortel ou à Orange que je vais apprendre l'existence d'ASN.1 c'est eux qui l'ont créé.
Marsh Posté le 03-05-2005 à 10:48:27
ReplyMarsh Posté le 03-05-2005 à 10:48:40
nraynaud a écrit : écoute petit boulet, si tu sortais tes doigts du cul, lisait un peu et utilisait ton cerveau, tu ne serais jamais venu poser ta question ici. J'ai pas eu besoin d'agresser qui que ce soit pour comprendre la différenc d'approche entre un iterator et une collection. |
Je m'aperçois que tes propos sont toujours aussi peu constructif. En revanche, j'ai réellement besoin de savoir si tu as eu recourt à ton cerveau pour me produire de tels commentaires. Si c'est le cas j'arrive à comprendre pourquoi tu n'arrives à repondre à ma question. Tu sais je ne vais pas t'en vouloir, si tu n'es pas assez competent pour me donner une reponse à mon problème. La question ne t'etait pas spécialement destiné mais plutot à des personnes qui maitrisent le sujet.
Maintenant, ce qu'il faut que tu saches, c'est que si je me suis inscrit sur ce forum, c'est pour trouver une solution à mon problème et non pas pour faire du social avec toi et supporter ta vulgarité d'un gamin de 10 ans.
Je pense sincèrement que pour être aussi acide et virulant, tu dois souffrir d'un complexe d'inferiorité et ne peux que t'inviter à consulter un spécialiste avant que ca te rende encore plus aigris.
PS: tu vois je suis venu pour trouver une solution à un problème et au final, c'est toi qui en a trouvé une
Marsh Posté le 03-05-2005 à 10:49:06
benou a écrit : ca a quoi de compliqué du sax ? |
C'est un sax de noeud @
Marsh Posté le 03-05-2005 à 10:51:39
tatou42> rajoutes en pas, quoi
je vais finir par closer si vous êtes pas capables de parler sans vous engueuler ...
Marsh Posté le 03-05-2005 à 10:51:50
tatou42 a écrit : |
Il consulte, mais il a déjà fait des progrès : il bave moins.
Marsh Posté le 03-05-2005 à 10:52:00
edit de benou : nraynaud, tu pètes les couilles !
si tu veux pas répondre, tu réponds pas et tu vas poster ton pied dans l'autre topic
Marsh Posté le 03-05-2005 à 11:01:00
benou a écrit : tatou42> rajoutes en pas, quoi |
tu as peut etre une idée benou! tu as l'air d'avoir compris mon problème. Tu sais c'est pas telement l'utilisation de SAX qui importe. Je voudrais surtour savoir comment ferais tu pour connaitre le nombre d'objet contenu dans un collection sachant que l'on n'a que l'iterateur
Marsh Posté le 03-05-2005 à 11:06:22
nraynaud a écrit : on peut pas, un Iterator c'est du traitement en flux, pas en collection. |
bon je quote nraynaud qui t'as donné la solution
on ne peut pas si on n'a que l'itérateur, donc si tu veux connaitre le nombre d'éléments, ben tu fais deux passages, le premier tu comptes, le deuxième tu fais ce que tu veux.
Marsh Posté le 03-05-2005 à 11:08:22
souk a écrit : bon je quote nraynaud qui t'as donné la solution |
C'est ce que j'ai fait, le problème c'est que ca prend un peu plus de temps.
Marsh Posté le 03-05-2005 à 11:26:57
tatou42 a écrit : C'est ce que j'ai fait, le problème c'est que ca prend un peu plus de temps. |
t'as pas le choix ...
je rajouterais aussi qu'à la première passe, tu dois en plus enregistrer les éléments de l'itérateur car tu ne peux pas faire un "reset" sur un iterateur => en plus ca te bouffe de la mémoire
2e solution : reconstruire l'itérateur pour la 2e passe
Marsh Posté le 03-05-2005 à 11:27:24
ReplyMarsh Posté le 03-05-2005 à 11:35:49
benou a écrit : tu te moinmoinises, toi, tu sais ? |
nan mais bon lire ça de la part d'un mec qui me prend pour un crétin, forcément ...
Marsh Posté le 03-05-2005 à 13:52:23
nraynaud a écrit : nan mais bon lire ça de la part d'un mec qui me prend pour un crétin, forcément ... |
Tu m'enlèves les mots de la bouche.
Marsh Posté le 03-05-2005 à 14:29:18
benou a écrit : tu te moinmoinises, toi, tu sais ? |
ça t'emmerde si je t'insulte, là ?
Marsh Posté le 03-05-2005 à 14:35:09
the real moins moins a écrit : |
tu te prendras un TT
Marsh Posté le 03-05-2005 à 17:42:14
Reply
Marsh Posté le 02-05-2005 à 17:05:11
peut t'on connaitre la taille d'une collection d'objet sachant que l'on n'a que l'iterateur:
j'ai la methode getDescendants() (define dans JDOM, classe Element) qui me renvoie un iterateur. Je souhaite juste connaitre le nombre de collection.