none
340 fichiers xml à créer à partir d'un template et d'un fichier de données en csv RRS feed

  • 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
    mardi 8 décembre 2009 14:18

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


    mercredi 6 janvier 2010 23:57

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
    mardi 29 décembre 2009 13:13
  • 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 ; shareName2 

    Login2      ,     LinkName1; LinkName2; LinkName3 ,                     shareName1;shareName2;shareName3

    Dans 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

    mardi 5 janvier 2010 13:46
  • 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


    mercredi 6 janvier 2010 23:57