JackDanny / projetDCLL_MoodleXML_Json

Projet pour passer du moodleXML au Json et vice-versa et Tutti Quanti
1 stars 2 forks source link

ToJson #19

Closed RaphaelFOURQUET closed 11 years ago

RaphaelFOURQUET commented 11 years ago

Coder la classe qui permet à partir du parser XML de traduire une question en JSON.

RaphaelFOURQUET commented 11 years ago

Pour le moment j'affiche le résultat en console , je n'ai pas abordé les pbs d'écriture dans un fichier, Par contre je n'arrive pas à récuperer le texte à l'intérieur d'une balise (ce que je fais avec getText()), je fouille la Javadoc pour trouver mieux( getchildtext..). edit : solution trouvée

RaphaelFOURQUET commented 11 years ago

On peut voir les premiers résultats en executant juste le Test.java(dans package traducteur Json), le code est encore moche et pas testé mais on voit déjà ce qu'il donne en traduisant une question (TrueFalse.xml à TrueFalse.json). Il y a surement des cas auxquels je n'ai pas pensé et je ne suis même pas sur que ce soit du Json correct pour le moment, il faudra le retravailler et le commenter .. etc.

RaphaelFOURQUET commented 11 years ago

Résumé des problèmes restants à traiter dans le ToJson : +présence de texte à l'intérieur du contenu des balises non traité (la méthode getText() me recupere en plus du texte les \t et \n ce qui complique le traitement car je récupere tous les \n contenus dans une balise englobante, sans aucune idée de leur position réelle) +Créer les listes [] quand plusieurs balises identiques, actuellement ma hashmap supprime les doublons. +Gestion des retours ligne et tabulations. @NawalOuldamer ou quelqu'un d'autre : Pour gérer ces retour chariots, serait il possible que tu fasses une classe qui parcourt un document qui ne contient qu'une seule ligne et l'indempte (i.e rajoute un retour ligne après chaque { ou [ ou ] ou } + le nombre correct de tabulations incrémenté après chaque { ou [ et décrémenté après chaque } ou ]. Concretement cela devrait indempter correctement mon fichier de test appelé TrueFalse.json (rempli en éxécutant ma classe ToJson).

ghost commented 11 years ago

@RaphaelFOURQUET : oui je m'occupe de cette classe, donc toi tu créer un document brute sans aucune retour chariot ou tabulation et moi j'insert les lignes et les tab ? c'est bien cela ?

RaphaelFOURQUET commented 11 years ago

Exactement tu peux déjà avoir une idée de ce à quoi ressemble mon fichier brut (TrueFalse.json). Pour le moment il ne gère pas les Array [] mais c'est en cours.

ghost commented 11 years ago

OK

ghost commented 11 years ago

@RaphaelFOURQUET : mais à l'écriture de JSon , la classe Sauvegarde insert correctement avec les tabulation et tout donc pourquoi Indempter un fichier ?

RaphaelFOURQUET commented 11 years ago

Gestion des Array [] réussi, Il reste quelques soucis dans certains cas (//CARE dans mon code) notamment ; +Array [] crée seulement si les balises identiques sont les premiers fils de la balise englobante +Une balise ne peut contenir du texte ET une sous balise ou un attribut (dans ce cas texte ignoré) +Faire des tests plus poussés pour voir si l'on rencontre ces cas (et JUnit) +Javadoc

@NawalOuldamer Le souçis est que moi lorsque je remplis le fichier Json, j'ignore les \t et \n présents car je ne peux pas déterminer leurs positions exactes, je crée donc un fichier json sur une seule ligne, il faut donc le réindempter après.

ghost commented 11 years ago

Don quand tu écris tu n'utilises pas la classe JsonGEn ??

RaphaelFOURQUET commented 11 years ago

Non, déjà expliqué le soucis en #28 Pour utiliser directement JsonGen il me faudrait partir de la balise la plus en profondeur dans l'arbre ce qui m'est impossible, j'utilise donc des maps et je construis le JSon au dernier moment.

Donc JsonGen difficile à utiliser tel quel car les imbrications de balises sont impossible à prévoir, il vaut mieux je pense garder ce que j'ai fait et ré-indempter le document, cela me parait bcp plus simple.

RaphaelFOURQUET commented 11 years ago

Oublié de lier mon dernier commit à cette issue(ça peut encore se faire?) mais j'ai corrigé quelques bugs, reste à traiter : +Creation d Array [] ssi les fils identiques se suivent. +Une balise ne peut contenir du texte ET (une sous balise ou un attribut) (dans ce cas texte ignoré) +Faire des tests plus poussés pour voir si l'on rencontre ces cas (et JUnit)

explication point un : si on a, a un niveau une balise < question > alors toutes les autres balises de ce niveau doivent être à la suite, non séparé par une autre comme : < question > .... < autrebalise de même niveau > ... < question > Je pense que ce cas ne peut arriver car défini comme < question >* dans une DTD non? à confirmer. point deux : A ma connaissance ce cas n'arrive pas non plus en MoodleXML, dur à gérer s'il arrivait, à vérifier.

@NawalOuldamer Tu penses pouvoir terminer la classe d'indemptation aujourd'hui? elle m'aiderait bcp pour les tests.

RaphaelFOURQUET commented 11 years ago

@NawalOuldamer je me suis documenté pour une indent auto plutot que le refaire à la main sur net.sf.json et ca donne des résultats corrects plus besoin de faire l indemptation manuelle.

RaphaelFOURQUET commented 11 years ago

Hormis les bugs possibles non découverts, partie terminée.