Bonjour,
j'ai besoin d'extraire les données d'un fichier XML et de sauvegarder ces données dans un fichier CSV.
J'ai besoin d'extraire du fichier suivant (extrait de fichier):
données:
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
27
28
29
30
31 <project title="" version="0.5" folioSheetQuantity="0"> <element x="80" y="330" type="embed://import/bornes-cables/borne_simple.elmt" orientation="0" uuid="{697707f9-8748-4261-be66-76a5960819bb}"> <terminals> <terminal number="_" x="0" y="-6" orientation="0" id="1" nameHidden="0" name="_"/> <terminal number="_" x="0" y="6" orientation="2" id="2" nameHidden="0" name="_"/> </terminals> <inputs> <input x="-1" text="X3.6" y="3"/> </inputs> <elementInformations> <elementInformation show="1" name="label">X3.6</elementInformation> </elementInformations> </element> <element x="730" y="330" type="embed://import/bornes-cables/borne_simple.elmt" orientation="0" uuid="{45da3bc2-fd5d-4b15-a5f9-a78483286769}"> <terminals> <terminal number="_" x="0" y="-6" orientation="0" id="3" nameHidden="0" name="_"/> <terminal number="_" x="0" y="6" orientation="2" id="4" nameHidden="0" name="_"/> </terminals> <inputs> <input x="-1" text="X4.2" y="3"/> </inputs> <elementInformations> <elementInformation show="1" name="label">X4.2</elementInformation> </elementInformations> </element> <conductors> <conductor terminal1="0" displaytext="1" terminal2="24" onetextperfolio="0" x="0" num="_" y="0" horizrotatetext="0" type="multi" numsize="6" vertirotatetext="270"/> <conductor terminal1="26" displaytext="1" terminal2="19" onetextperfolio="0" x="0" num="123456789" y="0" horizrotatetext="0" type="multi" numsize="6" vertirotatetext="270"/> <conductor terminal1="30" displaytext="1" terminal2="15" onetextperfolio="0" x="0" num="02468" y="0" horizrotatetext="0" type="multi" numsize="6" vertirotatetext="270"/> </conductors>
1: dans la section /project/diagram/elements/element/elementInformations/elementInformations: name="label" (exemple: name="label">X4.2)
2: dans la section /project/diagram/elements/element: type (exemple: type="embed://import/bornes-cables/borne_simple.elmt")
3: dans la section /project/diagram/elements/element/terminals/terminal: les idx2 (exemple: id="3")
4: dans la section /project/diagram/elements/element/terminals/terminal: les 2 orientation (exemple 0 et 2)
je souhaite mettre les résultats en forme: donnée1;donnée2;donnée3;donnée4 (x2)
J'arrive à tout récupérer sauf le 2ème id et la 2ème orientation.
mon script:
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
27
28 #!/bin/bash #nécessite les paquets: zenity; xmlstarlet { projet=`zenity --title "Sélectionner le fichier xml" --file-selection --filename="./Bureau"` if [ $? != 0 ]; then # si fermeture exit 1 fi [ $? -ne 0 ] && exit 2 # si annulation } { dossier=`zenity --title "Sélectionner le dossier de destination" --file-selection --directory` if [ $? != 0 ]; then # si fermeture exit 1 fi [ $? -ne 0 ] && exit 2 # si annulation } xmlstarlet sel -T -t -m /project/diagram/elements/element -s A:T:- "elementInformations" -v \ "concat(elementInformations/*[@name='label'], ';' ,@type, ';', terminals/terminal/@id, ';' , terminals/terminal/@orientation)" -n "$projet" > "$dossier/bornes.csv" zenity --info --title="Fichier CSV créé" --height=100 --width=300
Merci pour votre aide.
Cordialement.
Partager