AWK - génération fichier xml à partir de fichier csv
Bonjour,
Je débute et on me demande à partir d'un fichier CSV "parent.csv" de générer un fichier xml "parent.xml" en utilisant awk
Je ne parviens pas à afficher les informations relatives aux enfants
Fichier "parent.csv"
Code:
1 2 3
| Dupont;Paris;France;Martin;5;Axelle;12;Quentin;3;
Durant;Marseille;France;Theo;5;
Martin;Lyon;France;Leon;2;Ariane;1; |
Fichier "parent.xml" qui doit être généré
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26
| <Rapport>
<Famille>
<Nom - "Dupont" />
<Lieu - Ville:"Paris" - Pays:"France" />
<Enfants>
<Enfant - Prenom:"Martin" - Age:5 />
<Enfant - Prenom:"Axelle" - Age:12 />
<Enfant - Prenom:"Quentin" - Age:3 />
</Enfants>
</Famille>
<Famille>
<Nom - Durant />
<Lieu - Ville:"Maresille" - Pays:"France" />
<Enfants>
<Enfant - Prenom:"Theo" - Age:"5" />
</Enfants>
</Famille>
<Famille>
<Nom - "Martin" />
<Lieu - Ville:"Lyon" - Pays:"France" />
<Enfants>
<Enfant - Prenom:"Leon" - Age:"2" />
<Enfant - Prenom:"Ariane" - Age:"1" />
</Enfants>
</Famille>
</Rapport> |
Code:
1 2 3 4 5 6 7 8 9 10 11
| awk -F, '{
if(NR==1){print "<Rapport>"};
split($0,array,";");
{print "\t<Famille>"};
{print ("\t\t<Nom - \042"array[1]"\042 />")};
{print ("\t\t<Lieu - Ville:\042"array[2]"\042 - Pays:\042"array[3]"\042 />")};
{print "\t\t<Enfants>"};
{print "\t\t</Enfants>"};
{print "\t</Famille>"}
}
END{print "</Rapport>"}' parent.csv > parent.xml |
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
| $ more parent.xml
<Rapport>
<Famille>
<Nom - "Dupont" />
<Lieu - Ville:"Paris" - Pays:"France" />
<Enfants>
</Enfants>
</Famille>
<Famille>
<Nom - "Durant" />
<Lieu - Ville:"Marseille" - Pays:"France" />
<Enfants>
</Enfants>
</Famille>
<Famille>
<Nom - "Martin" />
<Lieu - Ville:"Lyon" - Pays:"France" />
<Enfants>
</Enfants>
</Famille>
</Rapport> |
Je ne parviens pas à afficher les enfants
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14
| awk -F, '{
if(NR==1){print "<Rapport>"};
split($0,array,";");
{print "\t<Famille>"};
{print ("\t\t<Nom - \042"array[1]"\042 />")};
{print ("\t\t<Lieu - Ville:\042"array[2]"\042 - Pays:\042"array[3]"\042 />")};
{print "\t\t<Enfants>"};
for (i = 4; i <= NF; i+=2) {
print ("\t\t\t<Enfant - Prenom:\042"array[i]"\042 - Age:\042"array[i+1]"\042 />")
};
{print "\t\t</Enfants>"};
{print "\t</Famille>"}
}
END{print "</Rapport>"}' parent.csv > parent.xml |
==> ne fonctionne pas
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
| $ more parent.xml
<Rapport>
<Famille>
<Nom - "Dupont" />
<Lieu - Ville:"Paris" - Pays:"France" />
<Enfants>
</Enfants>
</Famille>
<Famille>
<Nom - "Durant" />
<Lieu - Ville:"Marseille" - Pays:"France" />
<Enfants>
</Enfants>
</Famille>
<Famille>
<Nom - "Martin" />
<Lieu - Ville:"Lyon" - Pays:"France" />
<Enfants>
</Enfants>
</Famille>
</Rapport> |
Merci de votre aide