TP9 - Question 2.3 - Demande de précisions

Programmation Avancée

Modérateur : douinj

favre_be
Messages : 7
Inscription : 21 oct. 2020 12:37

TP9 - Question 2.3 - Demande de précisions

Message par favre_be » 24 déc. 2020 17:33

Bonjour,
Je ne comprends pas ce que l'on doit faire sur la conversion XML vers AST.
J'ai mon XML que j'arrive à lire (y compris les enfants). (serialisation/deserialisation Ok)
On doit reconstruire un AST.
C'est à dire qu'il faut recréer un jeu d'instructions (du type sequence, affectation, etc...)?

Au début, je pensais faire un String qui reprenait exactement les instructions que l'on trouve dans les AST:
Ex: AST_Aff

Code : Tout sélectionner

	private Contexte m = new Memoire();
	private Variable x = new Variable(m, "x");
	private Variable y = new Variable(m, "y");
	private Constante cinq = new Constante(5);
	private Constante sept = new Constante(7);
	private Instruction ast = new Sequence(new Affectation(x, cinq), new Affectation(y, new Addition(sept, x)));
Mais je fais fausse route car je ne vois pas ce que j'en ferai après...

Si en ce jour de réveillon, vous pouviez me donner un indice, ce serait Noël avant l'heure!? -))

Merci à vous,

djabir_w
Messages : 13
Inscription : 25 oct. 2020 14:08

Re: TP9 - Question 2.3 - Demande de précisions

Message par djabir_w » 31 déc. 2020 21:39

Je suis moi aussi bloqué à cette question, est-ce que tu as pu trouver une solution ?

Mr Douin, pourriez-vous expliquer, au moins, la marche à suivre pour cette question ? Donner la page du cours qui explique comment faire ?

Merci beaucoup

douinj
Messages : 263
Inscription : 18 mars 2009 15:46

Re: TP9 - Question 2.3 - Demande de précisions

Message par douinj » 01 janv. 2021 13:30

Bonjour,

Vous êtes dans un "classique" de sérialisation d'un objet sous une forme textuelle (texte que l'on doit reconstituer en structures Java)

Java -> XML -> Java <- tp9

Bonne fin de tp

djabir_w
Messages : 13
Inscription : 25 oct. 2020 14:08

Re: TP9 - Question 2.3 - Demande de précisions

Message par djabir_w » 01 janv. 2021 14:26

Merci de votre réponse.

Je pense avoir déjà bien compris qu'il s'agit ici de XML -> JAVA, cela ne m'avance pas.
Quelqu'un pourrait-il s'il vous plaît me mettre sur le chemin de la marche à suivre? Comment itérer parmi tous les éléments pour ensuite recréer l'objet ? Un exemple pertinent quelque part sur internet ?

Le cours page 84-85 montre comment lire un fichier XML pour reconstruire l'arbre, mais cela ne s'applique pas dans le cas de cette question, puisque l'élément "enfant" n'est pas toujours le même. Cela peut une Instruction/Expression/OperationBooleenne, avec un nombre inconnu de couches, selon le programme.

Merci beaucoup.

guill_f58
Messages : 36
Inscription : 10 oct. 2020 19:42

Re: TP9 - Question 2.3 - Demande de précisions

Message par guill_f58 » 01 janv. 2021 22:46

djabir_w a écrit :
01 janv. 2021 14:26
Merci de votre réponse.

Je pense avoir déjà bien compris qu'il s'agit ici de XML -> JAVA, cela ne m'avance pas.
Quelqu'un pourrait-il s'il vous plaît me mettre sur le chemin de la marche à suivre? Comment itérer parmi tous les éléments pour ensuite recréer l'objet ? Un exemple pertinent quelque part sur internet ?

Le cours page 84-85 montre comment lire un fichier XML pour reconstruire l'arbre, mais cela ne s'applique pas dans le cas de cette question, puisque l'élément "enfant" n'est pas toujours le même. Cela peut une Instruction/Expression/OperationBooleenne, avec un nombre inconnu de couches, selon le programme.

Merci beaucoup.
Salut, j'attends une meilleur solution que celle-ci mais tu devrais récupérer les éléments dans un tableau d'éléments. Et à partir de là, imbriquer tes constructeurs les uns dans les autres en fonction de l'élément sur lequel tu tombe.
En cherchant sur internet et dans les diapos, je n'ai rien trouvé de concret la dessus. Il faudrait trouver "jdom xml to java composite"

bouty_g
Messages : 10
Inscription : 02 oct. 2020 17:36

Re: TP9 - Question 2.3 - Demande de précisions

Message par bouty_g » 03 janv. 2021 16:07

Salut,
Pour solutionner cette question, j'ai fabriqué, de mon côté, une fonction récursive qui navigue dans l'arbre de donnée et reconstruit au fur et à mesure les objets, Instruction, Variable, Constante, Non, etc., en utilisant la réflexion, en s'appuyant sur le nom des balises XML. Juste une remarque à prendre en compte avec cette méthode, on peut fabriquer une fonction générale qui s'applique à tous les objets (il faudra juste prévoir une adaptation de l'instanciation en fonction des arguments), sauf pour les objets Element dont on à utiliser la méthode setText() (je pense en particulier aux objets Variables et Constante).

N'hésitez par si besoin de plus d'infos.

++

Répondre