#1 Le 16/07/2015, à 18:14
- galexis
Aide pour script sur fichier XML et CSV
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):
<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>
données:
1: dans la section /project/diagram/elements/element: type (exemple: type="embed://import/bornes-cables/borne_simple.elmt")
2: dans la section /project/diagram/elements/element/elementInformations/elementInformations: name="label" (exemple: name="label">X4.2)
3: dans la section /project/diagram/elements/element/terminals/terminal: les idx2 (exemple: id="3")
je souhaite mettre les résultats en forme: donnée1;donnée2;donnée3.
Je bloque sur la récupération des données 2 id. Je fait:
xmlstarlet sel -T -t -m /project/diagram/elements/element -s D:N:- "elementInformations" -v "concat(elementInformations,'|',@type,'|',@id)" -n /le_fichier_xml.xml
exemple de résultat:
X4.2
|embed://import/bornes-cables/borne_simple.elmt|
je n'arrive pas à récupérer les numéro d'id.
Ensuite, je souhaite enregistrer tous les résultats dans un fichier csv, et là, j'ai beau chercher du côté de awk entre autre : pas de résultat.
Merci pour votre aide.
Cordialement.
Hors ligne
#2 Le 17/07/2015, à 11:50
- galexis
Re : Aide pour script sur fichier XML et CSV
J'ai un peu avancé sur la commande xmlstarlet :
xmlstarlet sel -T -t -m /project/diagram/elements/element -s A:T:- "elementInformations" -v \
"concat(elementInformations/*[@name='label'],';',@type,';', terminal/@id)" -n le_fichier_xml.xml > fichier_csv.csv
le retour est;:
X4.2;embed://import/bornes-cables/borne_simple.elmt;
il manque encore les numéro de id. J'arrive à les récupérer séparément:
xmlstarlet sel -T -t -m /project/diagram/elements/element/terminals -s A:N:- "@id" -v "(terminal/@id)" -n le_fichier_xml.xml )
mais pas à le faire en même temps ...
Hors ligne