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 : Sélectionner tout - Visualiser dans une fenêtre à part
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 : Sélectionner tout - Visualiser dans une fenêtre à part
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 : Sélectionner tout - Visualiser dans une fenêtre à part
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 : Sélectionner tout - Visualiser dans une fenêtre à part
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 : Sélectionner tout - Visualiser dans une fenêtre à part
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 : Sélectionner tout - Visualiser dans une fenêtre à part
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