Meilleur auteur de réponses
340 fichiers xml à créer à partir d'un template et d'un fichier de données en csv

Question
-
Salut à tous,
J'ai 340 fichiers XML à créer à partir d'un modèle et à alimenter avec fichier de données en CSV.
Dans mon XML modèle il y a plusieurs chaines de caractères qu'il faut que je remplace par les données de mon csv dans les fichiers xml de sortie.
J'ai bien tenté de vous faire un algorithme pour expliquer mon besoin mais même ça je n'y arrive pas.
Quelqu'un a -t-il un script qui fasse ceci et dont je pourrais m'inspirer?
Merci de votre aide
Lyes
Réponses
-
bonsoir,
voila ce que je te propose comme script
tester avec le fichier MyCSV.csv (comme ci joint)
Champs1,champs2,champs3
Login1,LinkName1; LinkName2,shareName1 ; shareName2
Login2,LinkName1; LinkName2; LinkName3 ,shareName1;shareName2;shareName3
ci joint le script
$MyCsvFile = Import-Csv .\MyCsv.csv "<MYXML>" | out-file .\MyXML.xml $MyCsvFile | foreach { "<bookmark name=" + [char]34+$_.champs1+ [char]34+">" | out-file .\MyXML.xml -Append $ch2 = ($_.champs2).split(";") $ch3 = ($_.champs3).split(";") for ($i = 0; $i -le ($ch2.length )-1 ; $i++) { "<name>" +$ch2[$i]+"</name> "| out-file .\MyXML.xml -Append "<parent>--none--</parent> "| out-file .\MyXML.xml -Append "<description />" | out-file .\MyXML.xml -Append "<server>srvfile</server> "| out-file .\MyXML.xml -Append "<share>" +$ch3[$i] +"</share> "| out-file .\MyXML.xml -Append "<path /> "| out-file .\MyXML.xml -Append "<appearance>homepage-and-file-browsing</appearance>" | out-file .\MyXML.xml -Append } "</bookmark>"| out-file .\MyXML.xml -Append } "</MYXML>" | out-file .\MyXML.xml -Append
resultat ci joint
<MYXML> <bookmark name="Login1"> <name>LinkName1</name> <parent>--none--</parent> <description /> <server>srvfile</server> <share>shareName1</share> <path /> <appearance>homepage-and-file-browsing</appearance> <name>LinkName2</name> <parent>--none--</parent> <description /> <server>srvfile</server> <share>shareName2</share> <path /> <appearance>homepage-and-file-browsing</appearance> </bookmark> <bookmark name="Login2"> <name>LinkName1</name> <parent>--none--</parent> <description /> <server>srvfile</server> <share>shareName1</share> <path /> <appearance>homepage-and-file-browsing</appearance> <name>LinkName2</name> <parent>--none--</parent> <description /> <server>srvfile</server> <share>shareName2</share> <path /> <appearance>homepage-and-file-browsing</appearance> <name>LinkName3</name> <parent>--none--</parent> <description /> <server>srvfile</server> <share>shareName3</share> <path /> <appearance>homepage-and-file-browsing</appearance> </bookmark> </MYXML>
j espere que ca t ira....
A toi de l'adapter à ton besoin
@+
Sylvain- Proposé comme réponse Marc LognoulModerator mercredi 30 juin 2010 10:08
- Marqué comme réponse Marc LognoulModerator mercredi 30 juin 2010 10:08
Toutes les réponses
-
Salut,
je ne vais pas pouvoir te donner de reponse (et je serais certainement pas le seul), mais je vais essayer de comprendre ce que tu veux faire !!!
aurais un exemple de fichier en entrée (avec deux entrées --en Csv; si j ai bien compris), et deux fichiers en sortie en XML.
Puis ces mêmes fichiers modifie les et montre nous ce que tu veux faire ;)
@+
Sylv1 -
Bonjour Sylvain,Ma tache a légèrement évolué. Le but est d'importer un fichier de configuration au format XML sur une passerelle SSL-JUNIPER.
Ce fichier contiendrait parmi d'autre paramètres, un ou plusieurs liens vers des partages Windows en fonction de chaque compte utilisateur.J'ai donc un fichier CSV qui contient 3 champs ( dont les 2 derniers sont multi valués avec comme séparateur interne ";"), exemple:Champs1 , champs2 , champs3----------------------------------------------------------------------------------------------------------------------------------------------------------------Login1 , LinkName1; LinkName2 , shareName1 ; shareName2Login2 , LinkName1; LinkName2; LinkName3 , shareName1;shareName2;shareName3Dans mon fichier XML de sortie je dois insérer à un endroit bien précis (entre 2 balises) autant de balises <bookmark> </bookmark> que de partages comme dans l'exemple ci dessous:<bookmark><name>LinkName1</name><parent>--none--</parent><description /><server>srvfile</server><share>share1</share><path /><appearance>homepage-and-file-browsing</appearance></bookmark><bookmark><name>LinkName2</name><parent>--none--</parent><description /><server>srvfile</server><share>shareName2</share><path /><appearance>homepage-and-file-browsing</appearance></bookmark>Les seules constantes sont :- le numéro de la ligne et/ou la balise de repère après lesquelles je dois insérer ce texte- le nom du serveur de fichiers qui est toujours le même ( dans l'exemple srvfiles)- le nom et l'ordre des balises entre <bookmark> et </bookmark>J'espère que c'est compréhensible parce que c'est presque aussi complexe (pour moi) à expliquer qu'a coder.Merci de ton aide et de votre aide à tous.Meilleurs voeux.Lyes -
bonsoir,
voila ce que je te propose comme script
tester avec le fichier MyCSV.csv (comme ci joint)
Champs1,champs2,champs3
Login1,LinkName1; LinkName2,shareName1 ; shareName2
Login2,LinkName1; LinkName2; LinkName3 ,shareName1;shareName2;shareName3
ci joint le script
$MyCsvFile = Import-Csv .\MyCsv.csv "<MYXML>" | out-file .\MyXML.xml $MyCsvFile | foreach { "<bookmark name=" + [char]34+$_.champs1+ [char]34+">" | out-file .\MyXML.xml -Append $ch2 = ($_.champs2).split(";") $ch3 = ($_.champs3).split(";") for ($i = 0; $i -le ($ch2.length )-1 ; $i++) { "<name>" +$ch2[$i]+"</name> "| out-file .\MyXML.xml -Append "<parent>--none--</parent> "| out-file .\MyXML.xml -Append "<description />" | out-file .\MyXML.xml -Append "<server>srvfile</server> "| out-file .\MyXML.xml -Append "<share>" +$ch3[$i] +"</share> "| out-file .\MyXML.xml -Append "<path /> "| out-file .\MyXML.xml -Append "<appearance>homepage-and-file-browsing</appearance>" | out-file .\MyXML.xml -Append } "</bookmark>"| out-file .\MyXML.xml -Append } "</MYXML>" | out-file .\MyXML.xml -Append
resultat ci joint
<MYXML> <bookmark name="Login1"> <name>LinkName1</name> <parent>--none--</parent> <description /> <server>srvfile</server> <share>shareName1</share> <path /> <appearance>homepage-and-file-browsing</appearance> <name>LinkName2</name> <parent>--none--</parent> <description /> <server>srvfile</server> <share>shareName2</share> <path /> <appearance>homepage-and-file-browsing</appearance> </bookmark> <bookmark name="Login2"> <name>LinkName1</name> <parent>--none--</parent> <description /> <server>srvfile</server> <share>shareName1</share> <path /> <appearance>homepage-and-file-browsing</appearance> <name>LinkName2</name> <parent>--none--</parent> <description /> <server>srvfile</server> <share>shareName2</share> <path /> <appearance>homepage-and-file-browsing</appearance> <name>LinkName3</name> <parent>--none--</parent> <description /> <server>srvfile</server> <share>shareName3</share> <path /> <appearance>homepage-and-file-browsing</appearance> </bookmark> </MYXML>
j espere que ca t ira....
A toi de l'adapter à ton besoin
@+
Sylvain- Proposé comme réponse Marc LognoulModerator mercredi 30 juin 2010 10:08
- Marqué comme réponse Marc LognoulModerator mercredi 30 juin 2010 10:08