ANT - Passage valeur dans property dont le nom est indexé
romegonic
Messages postés
28
Date d'inscription
Statut
Membre
Dernière intervention
-
romegonic Messages postés 28 Date d'inscription Statut Membre Dernière intervention -
romegonic Messages postés 28 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
J'ai placé cette question dans Java, puisque je n'ai pas trouvé de sous-forum dédié à ANT.
Je parcours un objet json (du style "nom1:valeur1" , "nom2:valeur2" , "nom2:valeur2")
Je recois le fichier json avec un sh qui l'envoie à un fichier build.toto.xml à ANT.
Dans ce fichier xml j'ai créé plusieurs targets, dont celle consistant à lire l'objet, en le répartissant ensuite dans deux séries de variables.
Comme la structure tableau (array) n'existe pas en ANT, j'ai décidé d'indexer le nom des properties, de manière à pouvoir les parcourir, comme si elles étaient indexées dans un tableau.
Bref voici mon code, puis l'output, ou j'arrive à afficher successivement le nom puis la valeur, mais pas à les assigner à des properties distinctes.
Si quelqu'un peut m'aider sur la manière dont je peut assigner à la variable 'tab_nom_objet_${nb_att}' la valeur de 'champ'
<target name="load_object" description="chargement de l'objet json">
<property name="objet" value="${objet_json}"/>
<var name="nb_att" value="0"/>
<var name="type" value="nom"/>
<for list="${objet}" param="attribut" delimiter=",">
<sequential>
<math result="nb_att" operand1="${nb_att}" operation="+" operand2="1" datatype="int"/>
<echo>Attribut ${nb_att} : @{attribut}</echo>
<var name="delim" value='"'/>
<for list="@{attribut}" param="champ" delimiter="${delim}">
<sequential>
<if><equals arg1="${type}" arg2="nom" />
<then>
<echo>champ : @{champ}</echo>
<property name="tab_nom_objet_${nb_att}" value="@{champ}"/>
<echo>tab_nom_objet_${nb_att} : @{tab_nom_objet_${nb_att}}</echo>
<var name="type" value="val"/>
</then>
<elseif><equals arg1="${type}" arg2="val" />
<then>
<echo>champ : @{champ}</echo>
<property name="tab_val_objet_${nb_att}" value="@{champ}"/>
<echo>tab_val_objet_${nb_att} : @{tab_val_objet_${nb_att}}</echo>
<var name="type" value="nom"/>
</then>
</elseif>
</if>
</sequential>
</for>
<echo>-----</echo>
</sequential>
</for>
<echo>Nombre d'attributs: ${nb_att}</echo>
</target>
.....
[echo] "nom_machine_logique""quawas1f5","socle""was_7","nom_serveur""srvzentest","nom_application""srvzentest_zentest.ear","nom_ear""zentest.ear","action""start","date_creation""13/03/2014 11:11:11","date_debutjob""13/03/2014 11:11:12","date_finjob""13/03/2014 11:11:13","origine""plugin","status""waiting","etape":null,"date_etape":null,"_id""53344ef20c053b716d64d3d6"
load_object:
[echo] Attribut 1 : "nom_machine_logique""quawas1f5"
[echo] champ : nom_machine_logique
[echo] tab_nom_objet_1 : @{tab_nom_objet_1}
[echo] champ : quawas1f5
[echo] tab_val_objet_1 : @{tab_val_objet_1}
[echo] -----
Merci par avance.
J'ai placé cette question dans Java, puisque je n'ai pas trouvé de sous-forum dédié à ANT.
Je parcours un objet json (du style "nom1:valeur1" , "nom2:valeur2" , "nom2:valeur2")
Je recois le fichier json avec un sh qui l'envoie à un fichier build.toto.xml à ANT.
Dans ce fichier xml j'ai créé plusieurs targets, dont celle consistant à lire l'objet, en le répartissant ensuite dans deux séries de variables.
Comme la structure tableau (array) n'existe pas en ANT, j'ai décidé d'indexer le nom des properties, de manière à pouvoir les parcourir, comme si elles étaient indexées dans un tableau.
Bref voici mon code, puis l'output, ou j'arrive à afficher successivement le nom puis la valeur, mais pas à les assigner à des properties distinctes.
Si quelqu'un peut m'aider sur la manière dont je peut assigner à la variable 'tab_nom_objet_${nb_att}' la valeur de 'champ'
<target name="load_object" description="chargement de l'objet json">
<property name="objet" value="${objet_json}"/>
<var name="nb_att" value="0"/>
<var name="type" value="nom"/>
<for list="${objet}" param="attribut" delimiter=",">
<sequential>
<math result="nb_att" operand1="${nb_att}" operation="+" operand2="1" datatype="int"/>
<echo>Attribut ${nb_att} : @{attribut}</echo>
<var name="delim" value='"'/>
<for list="@{attribut}" param="champ" delimiter="${delim}">
<sequential>
<if><equals arg1="${type}" arg2="nom" />
<then>
<echo>champ : @{champ}</echo>
<property name="tab_nom_objet_${nb_att}" value="@{champ}"/>
<echo>tab_nom_objet_${nb_att} : @{tab_nom_objet_${nb_att}}</echo>
<var name="type" value="val"/>
</then>
<elseif><equals arg1="${type}" arg2="val" />
<then>
<echo>champ : @{champ}</echo>
<property name="tab_val_objet_${nb_att}" value="@{champ}"/>
<echo>tab_val_objet_${nb_att} : @{tab_val_objet_${nb_att}}</echo>
<var name="type" value="nom"/>
</then>
</elseif>
</if>
</sequential>
</for>
<echo>-----</echo>
</sequential>
</for>
<echo>Nombre d'attributs: ${nb_att}</echo>
</target>
.....
[echo] "nom_machine_logique""quawas1f5","socle""was_7","nom_serveur""srvzentest","nom_application""srvzentest_zentest.ear","nom_ear""zentest.ear","action""start","date_creation""13/03/2014 11:11:11","date_debutjob""13/03/2014 11:11:12","date_finjob""13/03/2014 11:11:13","origine""plugin","status""waiting","etape":null,"date_etape":null,"_id""53344ef20c053b716d64d3d6"
load_object:
[echo] Attribut 1 : "nom_machine_logique""quawas1f5"
[echo] champ : nom_machine_logique
[echo] tab_nom_objet_1 : @{tab_nom_objet_1}
[echo] champ : quawas1f5
[echo] tab_val_objet_1 : @{tab_val_objet_1}
[echo] -----
Merci par avance.
A voir également:
- ANT - Passage valeur dans property dont le nom est indexé
- Ant renamer - Télécharger - Gestion de fichiers
- Passage qwerty azerty - Guide
- Comment trouver un film dont on a oublié le nom ? - Télécharger - Divers TV & Vidéo
- Changer le nom de son iphone - Guide
- Nom sonnerie iphone - Forum iPhone