Le forum (ô combien francophone) des utilisateurs de Powerbuilder.
Bonjour,
Quelqu'un a-t-il déjà fait un merge rapide de fichiers XML ?
Merci !
Hors ligne
Oula, merge, rapide et XML dans la meme phrase?! Ca doit etre une erreur...
Sinon, j'ai deja fait pas mal de trucs en PB avec XML, tout depend de ce que tu cherches...
Si tes XML a merger ont le meme schema, et qu'ils n'ont pas plus de 2 niveau d'imbrication hierarchique, la technique rapide et pas cher, c'est le template XML de la dw.
Et dans tout les autres cas, faut s'attaquer au PBDOM.
...et si ta question sous entendait un truc du genre "z'avez pas un bout de code qui traine pour le faire", ben malheureusement je n'en ai pas ici...
Hors ligne
Cortex a écrit:
Oula, merge, rapide et XML dans la meme phrase?! Ca doit etre une erreur...
Sinon, j'ai deja fait pas mal de trucs en PB avec XML, tout depend de ce que tu cherches...
Si tes XML a merger ont le meme schema, et qu'ils n'ont pas plus de 2 niveau d'imbrication hierarchique, la technique rapide et pas cher, c'est le template XML de la dw.
Et dans tout les autres cas, faut s'attaquer au PBDOM.
...et si ta question sous entendait un truc du genre "z'avez pas un bout de code qui traine pour le faire", ben malheureusement je n'en ai pas ici...
En fait ce que je viens de faire c'est prendre chacun de mes N XML générés et ensuite je parcours chaque ligne et forme écris les lignes dans un fichier XML destination.. mais le parcours des lignes de chaque XML est vraiment très long..
Hors ligne
Oooh.
Tu t'es bricolé une routine qui fait ça? Ben au moins, ça a le mérite de marcher, alors je me tracasserais pas de la vitesse de traitement si j'étais toi...
Parce que si tu te fais une routine en PBDOM ta vitesse va diminuer exponentiellement avec la taille des fichiers en mémoire, et si tu fais du XML DW template, tu vas te casser les c___ pour qu'il marche bien et que toutes les balises soient a la bonne place...
Reste la soluce de faire une XSLT. Mais la, sans mes bouquins je ne peux rien faire, et il te faudra un processeur XSLT et un outil pour l'appeler (exit PB)...
Hors ligne
Cortex a écrit:
Oooh.
Tu t'es bricolé une routine qui fait ça? Ben au moins, ça a le mérite de marcher, alors je me tracasserais pas de la vitesse de traitement si j'étais toi...
Parce que si tu te fais une routine en PBDOM ta vitesse va diminuer exponentiellement avec la taille des fichiers en mémoire, et si tu fais du XML DW template, tu vas te casser les c___ pour qu'il marche bien et que toutes les balises soient a la bonne place...
Reste la soluce de faire une XSLT. Mais la, sans mes bouquins je ne peux rien faire, et il te faudra un processeur XSLT et un outil pour l'appeler (exit PB)...
Oui j'ai fait ça, ça fonctionne bien alors on va rester sur ça je ne pensais pas qu'en PBDOM ce serait plus long.
Merci
Hors ligne
thezerg a écrit:
Oui j'ai fait ça, ça fonctionne bien alors on va rester sur ça je ne pensais pas qu'en PBDOM ce serait plus long.
C'est toujours un peu la surprise avec le DOM (que ce soit en PB, Java ou n'importe quoi d'autre... ), il faut un objet en memoire par balise, un par attribut de ta balise, un pour ceci ou cela... Bref, quand tu sort des fichiers a quelques centaines de Ko, ca devient vite gourmant en memoire, et en temps...
Faudrait un jour que quelqu'un se decide a adapter un des moteur SAX du marché pour PB, comme certains l'ont fait pour DOM en creant PBDOM...
Hors ligne
Cortex a écrit:
thezerg a écrit:
Oui j'ai fait ça, ça fonctionne bien alors on va rester sur ça je ne pensais pas qu'en PBDOM ce serait plus long.
C'est toujours un peu la surprise avec le DOM (que ce soit en PB, Java ou n'importe quoi d'autre... ), il faut un objet en memoire par balise, un par attribut de ta balise, un pour ceci ou cela... Bref, quand tu sort des fichiers a quelques centaines de Ko, ca devient vite gourmant en memoire, et en temps...
Faudrait un jour que quelqu'un se decide a adapter un des moteur SAX du marché pour PB, comme certains l'ont fait pour DOM en creant PBDOM...
Ok ! En fait c'est à cause de la mémoire qu'on découpe le fichier principal en plusieurs autres car le Retrieve prends énormément de mémoire et fait planter PB, même en faisant des Destroy et des GarbageCollector() rien ne change...
Hors ligne