Bonjour,
Je dispose d'un fichier XML sous cette forme :
Je cherche à extraire les données de ce xml et de les mettre au format CSV dans un unique fichier de ce type :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12 <xml> <element> <nom>DUPOND</nom <prenom>Paul</prenom> .... </element> <element> <nom>DURAND</nom <prenom>Pierre</prenom> .... </element> </xml>
La contrainte est que l'ordre ainsi que le nombre de balises XML peut varier ( on peut ajouter par exemple la balise adresse, et inverser nom / prenom), donc avoir un système souple et dynamique.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 nom;prenom;.... DUPOND;Paul;... DURAND;Pierre...
(Le fichier XML est un fichier dépassant les 100Mo)
Ce que j'ai commencé à faire :
Suppression des balises xml :
Je suis pas vraiment avancé, il me manque à savoir de quelle balise il s'agit, et ordonner à la rigueur les valeurs pour créer la ligne csv.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12 awk "/<xml>/,/<\/xml>/" fichier.xml | grep -v "xml>" > fichier.log while read line;do # Nouvelle ligne if [ "$line" == "<element>" ] then echo -e '\n' else echo $line | cut -d "[" -f 3 | cut -d "]" -f 1 => Recuperation de la valeur de la balise fi done done < fichier.log
Mais vraiment pas terrible comme algo.
Merci de votre aide
Partager