remplissage de plusieurs fichiers XML depuis un fichier XLS - XML/XSL - Programmation
Marsh Posté le 07-12-2009 à 12:40:58
ReplyMarsh Posté le 07-12-2009 à 13:22:27
Modération a écrit : Merci d'éviter de créer 36 topics pour le même sujet. |
Désolé,
Je ne savais pas trop dans quelle catégorie le mettre j'hésitais entre les 3.
C'est promis je recommencerai plus
Lyes
Marsh Posté le 07-12-2009 à 13:23:58
sed et awk sont tes amis. tu enregistres ton fichier input en csv, puis tu fais qqchose comme
Code :
|
Marsh Posté le 08-12-2009 à 11:05:28
pataluc a écrit : sed et awk sont tes amis. tu enregistres ton fichier input en csv, puis tu fais qqchose comme
|
Bonjour Pataluc,
Ta solution m'intéresse, cependant comment est-ce que je fait pour récupérer la structure de mon xml d'origine?
Parce qu'en fait les xml généré sont destinés à être injecté dans une passerelle juniper.
Y'a t-il possibilité d'indiquer un autre fichier xml "modèle" en entrée afin qu'il reprenne (en sortie) la même strucure que le fichier xml modèle?
Je sais pas si c'est très clair se que je dis mais j'ignore comment m'expliquer autrement.
Merci de ton aide et de votre aide à tous
Lyes
Marsh Posté le 08-12-2009 à 11:16:49
dsl j'ai rien compris.
ah je crois que j'ai compris, il y a une erreur dans ce que j'ai mis plus haut, ca ca devrait être mieux:
Code :
|
Marsh Posté le 08-12-2009 à 13:16:30
pataluc a écrit :
|
Merci de ta réponse et de ta rapidité.
Néanmoins il reste une petite chose obscure pour mes neuronnes.
Si j'ai bien compris dans les balises de mon template XML il faut que je mette le nom des champs (computer Nam, Logon...) à remplacer par mes variables ($1 $2 $3 ...)?
Faut-il que les séparateurs de mon csv soient des "\" ?
Et le awk va me générer le script traitement.sh qui va faire le boutlot?
Si c'est ça ta solution est géniale !!!
Merci pour ton aide.
Lyes
Marsh Posté le 08-12-2009 à 14:17:35
anticafards a écrit : Si j'ai bien compris dans les balises de mon template XML il faut que je mette le nom des champs (computer Nam, Logon...) à remplacer par mes variables ($1 $2 $3 ...)? |
Exactement. dans ce que j'ai mis, le sed va chercher dans le template "Computer Name", ou "LogonName" et le remplacer par $1 ou $2.
anticafards a écrit : Faut-il que les séparateurs de mon csv soient des "\" ? |
en l'occurrence il faut que ce soit des points virgules. mais tu peux le changer en modifiant le paramètre -F du awk.
anticafards a écrit : Et le awk va me générer le script traitement.sh qui va faire le boutlot? |
normalement, oui.
Marsh Posté le 08-12-2009 à 14:55:05
pataluc a écrit : |
pataluc a écrit : |
pataluc a écrit : normalement, oui. |
Bon je viens d'essayer mais chez moi ça marche pas.
J'utilise Windows et les GNU/UnxUtils for windows.
J'ai tappé la commande suivante dans une console cmd sous windows XP depuis le répertoire où se trouve mes 2 fichiers le input.csv et le template.xml:
gawk -F\; '{print "sed -e \"s/FullName/$1/\" -e \"s/Login_RDP/$2/\" -e \"s/computer/$3/\" -e \"s/logon/$4/\" -e \"s/logon2/$5/\" template.xml > $2_.xml"}' input.csv > traitement.cmd
et voici ce que ça me renvoit:
D:\debug>gawk -F\; '{print "sed -e \"s/FullName/$1/\" -e \"s/Login_RDP/$2/\" -e
\"s/computer/$3/\" -e \"s/logon/$4/\" -e \"s/logon2/$5/\" template.xml > $2_.xm
l"}' input.csv 1>traitement.cmd
gawk: warning: escape sequence `\;' treated as plain `;'
gawk: cmd. line:1: '{print
gawk: cmd. line:1: ^ invalid char ''' in expression
Je sais pas si j'ai mal compris qqchose?
Encore merci pour ton aide
Lyes
Marsh Posté le 07-12-2009 à 12:38:39
Bonjour,
Je vous sollicite une nouvelle fois parce que j'ai une tache récurrente à faire et j'ai mis 2 heures pour faire 20 fois cette tache.
Je cherche donc une solution scriptée.
Voilà:
J'ai approximativement 340 fichiers XML à créer et à alimenter avec des données contenues dans un fichier excel.
Mon fichier excel comporte 4 colonnes qui sont respectivement :
le Computer Name, le LogonName, le FullName, et une chaine de caractère qui est logonName_RDP.
Mon fichier XML (copié ci dessous) doit être rempli comme suit:
<configuration xmlns="http://xml.juniper.net/ive-sa/6.3R6.1" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<users>
<user-roles>
<user-role>
<name>FullNAME</name>
<general>
<overview>
<options>
<vlan-source-ip>false</vlan-source-ip>
<session-options>false</session-options>
<ui-options>false</ui-options>
</options>
<access-features>
<web>false</web>
<windows-files>false</windows-files>
<nfs-files>false</nfs-files>
<sam>false</sam>
<telnet-ssh>false</telnet-ssh>
<terminal-services>true</terminal-services>
<meeting>false</meeting>
<email>false</email>
<network-connect>false</network-connect>
</access-features>
</overview>
</general>
<terminal-services>
<sessions>
<session>
<name>FullNAME_RDP</name>
<description />
<parent>--none--</parent>
<auto-launch>true</auto-launch>
<wts>
<username><USER></username>
<password-type>variable</password-type>
<variable-password><PASSWORD></variable-password>
<host>COMPUTER NAME</host>
<client-port>0</client-port>
<server-port>3389</server-port>
<screen-size>fullscreen</screen-size>
<color-depth>16-bit</color-depth>
<launch-seamless>false</launch-seamless>
<alias-name />
<application-path />
<path-dir />
<connect-drives>false</connect-drives>
<connect-printers>false</connect-printers>
<connect-comports>false</connect-comports>
<allow-clipboard>false</allow-clipboard>
<experience-options>
<desktop-background>false</desktop-background>
<menu-window-animation>false</menu-window-animation>
<bitmap-caching>false</bitmap-caching>
<desktop-composition>false</desktop-composition>
<show-content-dragging>false</show-content-dragging>
<themes>false</themes>
<font-smoothing>false</font-smoothing>
</experience-options>
<connect-smartcards>false</connect-smartcards>
<sound-options>disable</sound-options>
</wts>
</session>
</sessions>
</terminal-services>
</user-role>
</user-roles>
<user-realms>
<realm>
<name>basic</name>
<role-mapping-rules>
<rule>
<name>logonName</name>
<user-name>
<test>is</test>
<user-names>logonName</user-names>
</user-name>
<roles>FullNAME</roles>
<stop-rules-processing>false</stop-rules-processing>
</rule>
</role-mapping-rules>
</realm>
</user-realms>
</users>
</configuration>
Pouvez vous m'aider ? Avez vous la solution miracle?
Merci de votre aide
Lyes