Modifier un fichier texte avec awk en bash... (Mac)

Résolu/Fermé
MAMu_ Messages postés 48 Date d'inscription mercredi 3 avril 2013 Statut Membre Dernière intervention 25 mai 2013 - 3 avril 2013 à 16:02
dubcek Messages postés 18718 Date d'inscription lundi 15 janvier 2007 Statut Contributeur Dernière intervention 22 mars 2024 - 26 mai 2013 à 10:22
Bonjour, pour la réalisation d'un frontend pour MAME SDL au format Mac, en projo flash local, je cherche à modifier les fichiers de sorties de MAME en bash avec sed...

Mon fichier listfull.txt (mame -listfull > listfull.txt) en sortie de MAME se présente ainsi (le nombre d'espaces, remplacés ici par des _ pour une lecture plus proche de la réalité, entre les noms et les descriptions varient, mais le premier " est toujours le 19e charactere de la ligne...) :

Name:_____________Description:
005_______________"005"
10yard____________"10-Yard Fight (World, set 1)"
10yard85__________"10-Yard Fight '85 (US, Taito license)"
10yardj___________"10-Yard Fight (Japan)"

Mon but est de transformer donc ces lignes en :

cmd00001="005";
butt00001="005";
cmd00002="10yard";
butt00002="10-Yard Fight (World, set 1)";
cmd00003="10yard85";
butt00003="10-Yard Fight '85 (US, Taito license)";
etc...

De manière à pouvoir les injecter sous forme de variables dans Flash...
Et franchement, j'avoue avoir de sérieuses lacunes, balbutiant en bash et surtout découvrant sed, qui me semble être la bonne voie pour atteindre mon but...

D'avance merci, toutes aides, explications, solutions (voir autre methode*) seront les bienvenues...
* pas de php, uniquement qu'en bash, mon projet étant un frontend local et étant de plus limité également par ce qu'accepte de lancer flash localement via un bouton...)

Sincèrement, MAMu_
A voir également:

51 réponses

MAMu_ Messages postés 48 Date d'inscription mercredi 3 avril 2013 Statut Membre Dernière intervention 25 mai 2013
18 avril 2013 à 17:59
pas tout suivi là... je vais essayer d'appliquer, ou mets tu ton
/<game / {ns=sprintf("%05d", ++n); if(nl++)print ""}
dans ton code...

Pourquoi le sort...? pour, une fois le champ description en premier de chaque lignes, classer chaque ligne par ordre alphabetique (donc selon description et non plus short name name=)...
ensuite je remet mes numeros 00001 00002...
et je charge donc mes variables en n+1 dans flash dans l'ordre alphabetique de description et non plus name...

Non..?
0
dubcek Messages postés 18718 Date d'inscription lundi 15 janvier 2007 Statut Contributeur Dernière intervention 22 mars 2024 5 615
19 avril 2013 à 08:50
si je prends les 2 premières balises, tu les veux comment ?
name00001="005";
sourcefile00001="segag80r.c";
description00001="005";
year00001="1981";
manufacturer00001="Sega";
type00001="raster";
rotate00001="270";
width00001="256";
height00001="224";
status00001="imperfect";
emulation00001="good";
color00001="good";
sound00001="imperfect";
graphic00001="good";

name00002="10yard";
sourcefile00002="m58.c";
description00002="10-Yard Fight (World, set 1)";
year00002="1983";
manufacturer00002="Irem";
type00002="raster";
rotate00002="0";
width00002="256";
height00002="224";
status00002="good";
emulation00002="good";
color00002="good";
sound00002="good";
graphic00002="good";
0
MAMu_ Messages postés 48 Date d'inscription mercredi 3 avril 2013 Statut Membre Dernière intervention 25 mai 2013
19 avril 2013 à 13:50
En fait je crois que ca devra être fait en plusieurs étapes :
au final, le fichier sera comme avant, cad tout sur une ligne à la suite, séparé par des & et sans les guillemets... mais en ayant auparavant inversé les champs name et description de maniere à ce que chaque groupe de variables commence par description, et en ayant avant la mise en forme finale mis chaque groupe par ordre alphabetique...

Je crois donc que la methode à suivre est la suivante :
1/chaque groupe sur une seule ligne à la suite sans les numéros (pour classer par ordre alphabetique plus tard en etape 3...) :
name=005&sourcefile=segag80r.c&description=005&...
name=10yard&sourcefile=m58.c&descrition=10-Yard Fight (World, set 1)&...

2/inverser pour chaque ligne les variables "name=xxxx" et "description=xxxx" de manière à ce que chaque ligne commence par la description...

3/faire un sort sur le fichier obtenu, tous mes groupes sont donc bien dans l'ordre alphabétique de "description"

4/remettre les numéros, supprimer le retour de ligne à la fin de chaque ligne...
0
MAMu_ Messages postés 48 Date d'inscription mercredi 3 avril 2013 Statut Membre Dernière intervention 25 mai 2013
19 avril 2013 à 14:08
au final je vais garder chaque variables.txt obtenu, en chargeant ceux ci selon le choix de l'utilisateur, j'obtiendrais donc une liste qui pourra etre trièe par ordre alphabetique, par zip name, par manufacturer, par année et par system...
Il faudra donc que j'inverse plusieurs champs et que je fasse un sort pour chaque cas de figure... (commence par short name, commence par description, commence par year/description, commence par Manufacturer/Description, et enfin commence par source/Description....)
0
dubcek Messages postés 18718 Date d'inscription lundi 15 janvier 2007 Statut Contributeur Dernière intervention 22 mars 2024 5 615
Modifié par dubcek le 19/04/2013 à 14:14
tu supprimes les No pour quand on trie :
description00001="005"; 
description00002="10-Yard Fight (World, set 1)";
il ne compte pas dans le tri ?
mais on peut trier uniquement après le =
tout sur UNE SEULE ligne ou une ligne par description/name ?
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
MAMu_ Messages postés 48 Date d'inscription mercredi 3 avril 2013 Statut Membre Dernière intervention 25 mai 2013
19 avril 2013 à 14:55
oui mais comme c'est le numero qui place ma variable dans le frontend... il faut que je numerote une fois le tri effectué... enfin.. selon ma logique...

là je me retrouve avec :

name="005"&sourcefile="segag80r.c"&description="005"&year="1981"&manufacturer="Sega"&type="raster"&rotate="270"&width="256"&height="224"&status="imperfect"&emulation="good"&color="good"&sound="imperfect"&graphic="good"
name="10yard"&sourcefile="m58.c"&description="10-Yard Fight (World, set 1)"&year="1983"&manufacturer="Irem"&type="raster"&rotate="0"&width="256"&height="224"&status="good"&emulation="good"&color="good"&sound="good"&graphic="good"
name="10yard85"&sourcefile="m58.c"&cloneof="10yard"&description="10-Yard Fight '85 (US, Taito license)"&year="1985"&manufacturer="Irem (Taito license)"&type="raster"&rotate="0"&width="256"&height="224"&status="good"&emulation="good"&color="good"&sound="good"&graphic="good"
name="10yardj"&sourcefile="m58.c"&cloneof="10yard"&description="10-Yard Fight (Japan)"&year="1983"&manufacturer="Irem"&type="raster"&rotate="0"&width="256"&height="224"&status="good"&emulation="good"&color="good"&sound="good"&graphic="good"
name="11beat"&sourcefile="aleck64.c"&description="Eleven Beat"&year="1998"&manufacturer="Hudson"&type="raster"&rotate="0"&width="640"&height="240"&status="preliminary"&emulation="preliminary"&color="good"&sound="preliminary"&graphic="good"
name="18w"&sourcefile="mw18w.c"&ismechanical="yes"&description="18 Wheeler (set 1)"&year="1979"&manufacturer="Midway"&status="preliminary"&emulation="preliminary"&color="good"&sound="preliminary"&graphic="good"
name="18w2"&sourcefile="mw18w.c"&ismechanical="yes"&cloneof="18w"&description="18 Wheeler (set 2)"&year="1979"&manufacturer="Midway"&status="preliminary"&emulation="preliminary"&color="good"&sound="preliminary"&graphic="good"
name="18wheelr"&sourcefile="naomi.c"&description="18 Wheeler Deluxe (Rev A) (JPN)"&year="2000"&manufacturer="Sega"&type="raster"&rotate="0"&width="640"&height="480"&status="preliminary"&emulation="preliminary"&color="good"&sound="imperfect"&graphic="imperfect"
name="18wheels"&sourcefile="naomi.c"&cloneof="18wheelr"&description="18 Wheeler (Rev A) (JPN)"&year="2000"&manufacturer="Sega"&type="raster"&rotate="0"&width="640"&height="480"&status="preliminary"&emulation="preliminary"&color="good"&sound="imperfect"&graphic="imperfect"
name="1941"&sourcefile="cps1.c"&description="1941: Counter Attack (World 900227)"&year="1990"&manufacturer="Capcom"&type="raster"&rotate="270"&width="384"&height="224"&status="good"&emulation="good"&color="good"&sound="good"&graphic="good"
name="1941j"&sourcefile="cps1.c"&cloneof="1941"&description="1941: Counter Attack (Japan)"&year="1990"&manufacturer="Capcom"&type="raster"&rotate="270"&width="384"&height="224"&status="good"&emulation="good"&color="good"&sound="good"&graphic="good"
name="1941r1"&sourcefile="cps1.c"&cloneof="1941"&description="1941: Counter Attack (World)"&year="1990"&manufacturer="Capcom"&type="raster"&rotate="270"&width="384"&height="224"&status="good"&emulation="good"&color="good"&sound="good"&graphic="good"
name="1941u"&sourcefile="cps1.c"&cloneof="1941"&description="1941: Counter Attack (USA 900227)"&year="1990"&manufacturer="Capcom"&type="raster"&rotate="270"&width="384"&height="224"&status="good"&emulation="good"&color="good"&sound="good"&graphic="good"

soit chaque groupe de variables sur une ligne...
comment faire pour inverser dans chaque ligne name="valeur" avec description="valeur"...?

J'ai bien trouvé cette commande :
awk -F\; '{print $1";"$2";"$4";"$3";"$5}' le_fichier_a_traiter > nom_du_fichier_de_sortie
mais comme le nombre de colonnes n'est pas fixe... ca ne peut pas marcher (ismechanical n'est pas tout le temps present par exemple...)
0
MAMu_ Messages postés 48 Date d'inscription mercredi 3 avril 2013 Statut Membre Dernière intervention 25 mai 2013
19 avril 2013 à 14:58
si je reussi à manipuler l'ordre des champs sur chaque ligne, j'ai plus qu'à le faire autant de fois que je veux d'ordre de tri, et repasser enfin la moulinette sur chaque fichier obtenus:
ajouter numero, supprimer le /n en fin de ligne, et supprimer les caracteres <,>,etc qui posent problèmes (& gt, & lt...)
0
dubcek Messages postés 18718 Date d'inscription lundi 15 janvier 2007 Statut Contributeur Dernière intervention 22 mars 2024 5 615
19 avril 2013 à 15:00
ok, donc des lignes
description=.XXX&name=...
description=AAA&name=...
on trie puis on numérote
description00001=AAA&name00001=...
description00002=XXX&name00002=...
0
MAMu_ Messages postés 48 Date d'inscription mercredi 3 avril 2013 Statut Membre Dernière intervention 25 mai 2013
19 avril 2013 à 15:01
exactement...
0
dubcek Messages postés 18718 Date d'inscription lundi 15 janvier 2007 Statut Contributeur Dernière intervention 22 mars 2024 5 615
Modifié par dubcek le 19/04/2013 à 16:02
essaye ça.
$ awk -f f5.awk listfull.xml | sort -t '&' -k 1 | awk '{ns=sprintf("%05d", ++n); gsub("=", ns "="); print}' 

$ cat f5.awk 
BEGIN {FS="[ \t>]+"; v="name=|sourcefile=|ismechanical=|cloneof=|type=|rotate=|width=|height=|status=|emulation=|color=|sound=|graphic=" ; c="&"} 
/<game / {gsub("\"", "", $3); name=$3; if(nl++)print ""} 
/<display |<driver / {for(f=2; f<=NF; f++){if($f ~ v){sub("=", ns "=", $f); gsub("\"", "", $f); printf $f c }}} 
/<description>/ {gsub("%", "%%"); gsub("&", "and"); split($0, t, "[<>]"); printf t[2] ns "=" t[3] c name c} 
/<year>|<manufacturer>/ {gsub("%", "%%"); gsub("&", "and"); split($0, t, "[<>]"); printf t[2] ns "=" t[3] c} 
si c'est ce que tu veux, je simplifierai f5.awk
0
MAMu_ Messages postés 48 Date d'inscription mercredi 3 avril 2013 Statut Membre Dernière intervention 25 mai 2013
19 avril 2013 à 16:47
... :/

Alors:
le fichier awk avec BEGIN {... c}, ok... (je l'ai appelé description.awk)
la commande awk -f description.awk listfull.xml > description.txt, ok

j'obtiens ligne par ligne sans numero, et bien avec Description en premier...

mais en dos, le sort -t '&' -k 1, que je le mette à la suite, ou seul, me met des messages d'erreur :

Fichier d'entrée spécifié deux fois.
''' n'est pas reconnu en tant que commande interne
ou externe, un programme exécutable ou un fichier de commandes.

Je le remplace simplement par sort description.txt > description2.txt
J'obtiens bien toutes les lignes triées par ordre alphabétique comme il faut... :)

Enfin, la deuxième commande awk (que je suis obligé de passer par un fichier externe -f num.awk)
ajoute bien l'incrementation pour chaque variables...

parfait... :) il suffit juste ensuite de faire sauter tous les retours à la ligne, et mon fichier est nickel...

pourrais tu m'expliquer dans description.awk avec quelle commande tu mets le champ description en debut de ligne...? que j'adapte pour d'autres ordres de tris...

Merci :)

PS: ca te derange pas que je te cite dans les credits de mon frontend...?
Parce que vraiment tu m'es d'une aide impressionante... :)
0
MAMu_ Messages postés 48 Date d'inscription mercredi 3 avril 2013 Statut Membre Dernière intervention 25 mai 2013
19 avril 2013 à 16:48
ne tiens pas compte du " ... :/ " en debut de message, c'etait à cause du sort, mais j'ai trouvé la solution ensuite comme expliqué plus bas...
0
dubcek Messages postés 18718 Date d'inscription lundi 15 janvier 2007 Statut Contributeur Dernière intervention 22 mars 2024 5 615
Modifié par dubcek le 19/04/2013 à 17:07
j'avais oublié la compatiblité DOS
il faut donc TOUT SUR UNE SEULE LIGNE ?
quel awk sur DOS awk --version? le gawk, GNU awk a des fonctions de tri : asort, asorti
0
MAMu_ Messages postés 48 Date d'inscription mercredi 3 avril 2013 Statut Membre Dernière intervention 25 mai 2013
19 avril 2013 à 17:15
J'utilises "awk.exe" , awk.exe --version me sort ceci :

GNU Awk 3.1.6
Copyright (C) 1989, 1991-2007 Free Software Foundation.

This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 3 of the License, or
(at your option) any later version.

This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.

You should have received a copy of the GNU General Public License
along with this program. If not, see http://www.gnu.org/licenses/

Au final oui, il me faut tout sur une seule ligne mais je sais le faire grace à toi ^^, pour que ce soit compatible et reconnu par flash...
0
dubcek Messages postés 18718 Date d'inscription lundi 15 janvier 2007 Statut Contributeur Dernière intervention 22 mars 2024 5 615
Modifié par dubcek le 20/04/2013 à 12:06
ceci fonctionne sur DOS et Linux, mais sort DOS ne retourne pas la même chose que sort Linux
C:> awk -f f5.awk listfull.xml > z1 
C:> sort z1 > z2 
C:> awk -f f6.awk z2 > z3 
ou 
C:> awk -f f5.awk listfull.xml | sort | awk -f f6.awk >  z4 

C:> type f5.awk  
BEGIN {FS="[ \t>]+"; v="sourcefile=|ismechanical=|cloneof=|type=|rotate=|width=|height=|status=|emulation=|color=|sound=|graphic=" ; c="&"} 
/<game |<display |<driver |<description>|<year>|<manufacturer>/ {gsub("\"", "");  gsub("%", "%%"); gsub("&", "and")} 
/<game / {name=$3; if(nl++)print ""} 
/<display |<driver / {for(f=2; f<=NF; f++)if($f ~ v)printf $f c } 
/<description>|<year>|<manufacturer>/ {na=""; if($0 ~ /descript/)na=name c; split($0, t, "[<>]"); printf t[2] "=" t[3] c na} 

C:> type f6.awk 
{gsub("%", "%%"); ns=sprintf("%05d", ++n); gsub("=", ns "="); printf $0} 

0
dubcek Messages postés 18718 Date d'inscription lundi 15 janvier 2007 Statut Contributeur Dernière intervention 22 mars 2024 5 615
20 avril 2013 à 13:44
pour avoir le minmum de différences entre les sort , utiliser : sort /l C sur DOS, sort -f sur Linux
0
MAMu_ Messages postés 48 Date d'inscription mercredi 3 avril 2013 Statut Membre Dernière intervention 25 mai 2013
20 avril 2013 à 15:45
merci je vais tester ca direct :)
0
MAMu_ Messages postés 48 Date d'inscription mercredi 3 avril 2013 Statut Membre Dernière intervention 25 mai 2013
20 avril 2013 à 15:46
pourrais tu m'expliquer dans f5.awk avec quelle ligne mets tu le champ "description" en premier...?

Que je puisse essayer de sortir plusieurs fichiers...
0
dubcek Messages postés 18718 Date d'inscription lundi 15 janvier 2007 Statut Contributeur Dernière intervention 22 mars 2024 5 615
20 avril 2013 à 16:03
je stocke le nom name=nom dans une variable name
/<game / {name=$3; if(nl++)print ""}
et je l'affiche après la description
/<description>|<year>|<manufacturer>/ {na=""; if($0 ~ /descript/)na=name c; split($0, t, "[<>]"); printf t[2] "=" t[3] c na}
0
MAMu_ Messages postés 48 Date d'inscription mercredi 3 avril 2013 Statut Membre Dernière intervention 25 mai 2013
20 avril 2013 à 16:21
dans le fichier obtenu, tous les champs sourcefile ont disparus en sortie... et peut être, voir surement, d'autres champs :/

avant mon variables3.txt obtenu faisait 8 Mo...
maintenant le fichier en sortie fait 2,8 Mo...
0
dubcek Messages postés 18718 Date d'inscription lundi 15 janvier 2007 Statut Contributeur Dernière intervention 22 mars 2024 5 615
20 avril 2013 à 16:47
juste
essaye ca, corrigé f5.awk
BEGIN {FS="[ \t>]+"; v="sourcefile=|ismechanical=|cloneof=|type=|rotate=|width=|height=|status=|emulation=|color=|sound=|graphic=" ; c="&"}
/<game |<display |<driver |<description>|<year>|<manufacturer>/ {gsub("\"", "");  gsub("%", "%%"); gsub("&", "and")}
/<game / {name=$3; for(f=4; f<=NF; f++)if($f ~ v)printf $f c; if(nl++)print ""}
/<display |<driver / {for(f=2; f<=NF; f++)if($f ~ v)printf $f c }
/<description>|<year>|<manufacturer>/ {na=""; if($0 ~ /descript/)na=name c; split($0, t, "[<>]"); printf t[2] "=" t[3] c na}

0
dubcek Messages postés 18718 Date d'inscription lundi 15 janvier 2007 Statut Contributeur Dernière intervention 22 mars 2024 5 615
Modifié par dubcek le 20/04/2013 à 17:33
il y a encore une erreur, 1 ligne commence par sourcefile,
je regarde
edit : essayer ce code:
BEGIN {FS="[ \t>]+"; v="sourcefile=|ismechanical=|cloneof=|type=|rotate=|width=|height=|status=|emulation=|color=|sound=|graphic=" ; c="&"}
/<game |<display |<driver |<description>|<year>|<manufacturer>/ {gsub("\"", "");  gsub("%", "%%"); gsub("&", "and")}
/<game / {name=$3; for(f=4; f<=NF; f++)if($f ~ v)name=name c $f; if(nl++)print ""}
/<display |<driver / {for(f=2; f<=NF; f++)if($f ~ v)printf $f c }
/<description>|<year>|<manufacturer>/ {na=""; if($0 ~ /descript/)na=name c; split($0, t, "[<>]"); printf t[2] "=" t[3] c na}
0
MAMu_ Messages postés 48 Date d'inscription mercredi 3 avril 2013 Statut Membre Dernière intervention 25 mai 2013
20 avril 2013 à 18:16
Mieux.. mais il doit encore manquer des champs...
6Mo au lieu de 8...

pas facile de trouver lesquels au milieu de ce fichier :) ^^

je vais comparer avec l'ancien et je te dis...
0
MAMu_ Messages postés 48 Date d'inscription mercredi 3 avril 2013 Statut Membre Dernière intervention 25 mai 2013
20 avril 2013 à 18:18
le plus simple, je vais modifier mon fichier flash pour qu'il m'affiche mes variables... pour l'instant je ne traite que "description" et "manufacturer"... je vais afficher toutes mes variables... comme ca je saurait direct celles qu'il manque selon le fichier chargé...
0
MAMu_ Messages postés 48 Date d'inscription mercredi 3 avril 2013 Statut Membre Dernière intervention 25 mai 2013
20 avril 2013 à 20:00
sourcefile, ismechanical, et cloneof sont les 3 grands absents ^^
Mes variables restent sur undefined...
0
dubcek Messages postés 18718 Date d'inscription lundi 15 janvier 2007 Statut Contributeur Dernière intervention 22 mars 2024 5 615
21 avril 2013 à 09:59
est-ce le bon f5.awk ?
$ awk -f f5.awk listfull.xml | sort -f > a0
$ grep -c 'sourcefile' a0
28473
$ grep -c 'cloneof' a0
19696
$ grep -c 'ismechanical' a0
9066
$
$ awk -f f5.awk listfull.xml | sort -f | awk -f f6.awk > a00
$ grep -o 'sourcefile[0-9]*=' a00 | wc -l
28473
$ grep -o 'cloneof[0-9]*=' a00 | wc -l
19696
$ grep -o 'ismechanical[0-9]*=' a00 | wc -l
9066
$
$ cat f5.awk
BEGIN {FS="[ \t>]+"; v="sourcefile=|ismechanical=|cloneof=|type=|rotate=|width=|height=|status=|emulation=|color=|sound=|graphic=" ; c="&"}
/<game |<display |<driver |<description>|<year>|<manufacturer>/ {gsub("\"", "");  gsub("%", "%%"); gsub("&", "and")}
/<game / {name=$3; for(f=4; f<=NF; f++)if($f ~ v)name=name c $f; if(nl++)print ""}
/<display |<driver / {for(f=2; f<=NF; f++)if($f ~ v)printf $f c }
/<description>|<year>|<manufacturer>/ {na=""; if($0 ~ /descript/)na=name c; split($0, t, "[<>]"); printf t[2] "=" t[3] c na}
0
MAMu_ Messages postés 48 Date d'inscription mercredi 3 avril 2013 Statut Membre Dernière intervention 25 mai 2013
21 avril 2013 à 13:55
Merci, en effet il me manquait quelques lignes... ca marche parfaitement... :)
du moins je l'espere.. Mais à première vue tout est bon...

Merci :)
0
MAMu_ Messages postés 48 Date d'inscription mercredi 3 avril 2013 Statut Membre Dernière intervention 25 mai 2013
27 avril 2013 à 05:50
tout marche impec, merci dubcek :)

pour le shortname (name=) (avec f5.awk) et le nom complet (description=) (avec sort)
, toutes mes variables sont bien recupérées dans mon flash et je les manipule sans problèmes..

Par contre j'ai toujours pas compris comment inverser des colonnes... :/

Car si maintenant et avant de passer au num.awk, j'ai besoin que le premier champ de chaques lignes de mon variables.txt soit l'année (year=), puis la description, name...

ou encore Manufacturer, puis la description si je veux classer par compagnies puis nom... etc...

J'ai beau essayé de modifier ton f5.awk, les deux fameuses lignes que tu m'as expliquée au moment de "swapper" description, pas moyen de creer d'autres ordres de tri sans tout casser...

Désolé... :/
0
dubcek Messages postés 18718 Date d'inscription lundi 15 janvier 2007 Statut Contributeur Dernière intervention 22 mars 2024 5 615
27 avril 2013 à 09:13
à part description= qui s'affiche avant name=, le reste est dans l'ordre trouvé dans le fichier xml. Pour afficher les variables dans un ordre précis, il faudrait tout mettre dans un taleau au fur et à mesure, et afficher à la fin après la balise de fin </game.
donc donne dans quel ordre tu veux les variables
0
MAMu_ Messages postés 48 Date d'inscription mercredi 3 avril 2013 Statut Membre Dernière intervention 25 mai 2013
27 avril 2013 à 10:33
bah en fait il me faudrait en plus des deux deja (ordre des short name (cad ordre xml), ordre alpha de la description(xml sort)), deux en plus :

un avec les lignes :
year=XXXX&description=AAAAAA&name=....


et l'autre avec les lignes :
Manufacturer=YYYY, year=XXXX, description=AAAAAA...

sur lesquels je ferais des sorts...
0