Concaténer contenus fichiers xml

Concaténer contenus fichiers xml - Shell/Batch - Programmation

Marsh Posté le 16-11-2010 à 15:58:09    

Bonjour,
 
J'ai un répertoire qui contient n fichiers xml correspondant à dossier traité. Chaque dossier traité correspond 2 fichiers xml. J'ai donc :
 
Exxxxx1.xml
Dxxxxx1.xml
Exxxxx2.xml
Dxxxxx2.xml
....
....
Exxxxx25.xml
Dxxxxx25.xml
 
Je dois concaténer les fichiers Exxxx1+Dxxxx1 ensemble en un seul fichier et ainsi de suite pour les autres couples. J'ai trouvé quelque chose, mais j'ai tout les fichiers concaténé en un seul... Or je dois obtenir au final un fichier xml unique par couple (par dossier traité). Comment faire en shelle en parcourant le répertoire (il n'y aura jamais de sous répertoires).
 
Merci pour votre aide.
@+ tard

Reply

Marsh Posté le 16-11-2010 à 15:58:09   

Reply

Marsh Posté le 16-11-2010 à 17:14:55    

salut,

 

tu devrais pouvoir t'en sortir avec un for et un seq:

Code :
  1. for f in $(seq 1 25)
  2. do cat *${f}.xml >> ${f}.xml
  3. done
 

(dans les grosses mailles, hein! je te laisse affiner, notamment le cat pour que cat *1 ne ramene pas *11, etc).

 

++

Message cité 1 fois
Message édité par pataluc le 16-11-2010 à 17:15:13
Reply

Marsh Posté le 16-11-2010 à 17:16:43    

ca va pas donner du XML bien formé ca :/

 

nicomes, es tu sur qu'il faille VRAIMENT concatener les fichier :??: Parce que ca va donner un fichier XML invalide, donc pas exploitable par les parseurs XML classiques

Message cité 1 fois
Message édité par kadreg le 16-11-2010 à 17:17:45

---------------
brisez les rêves des gens, il en restera toujours quelque chose...  -- laissez moi troller sur discu !
Reply

Marsh Posté le 17-11-2010 à 07:38:34    

pataluc a écrit :

salut,
 
tu devrais pouvoir t'en sortir avec un for et un seq:

Code :
  1. for f in $(seq 1 25)
  2. do cat *${f}.xml >> ${f}.xml
  3. done


 
(dans les grosses mailles, hein! je te laisse affiner, notamment le cat pour que cat *1 ne ramene pas *11, etc).
 
++


 
Salut,
 
Merci pour la réponse, mais ça ne va pas, il se mélange complétement. Il faut réunir Exxxx1 et Dxxxx1 dans le même fichier xml, dans cet ordre (d'abord le fichier qui commence par E puis l'autre par D). Comment lui indiquer le bon ordre ?  
 
Merci pour ton aide.
@+ tard

Reply

Marsh Posté le 17-11-2010 à 07:39:21    

kadreg a écrit :

ca va pas donner du XML bien formé ca :/
 
nicomes, es tu sur qu'il faille VRAIMENT concatener les fichier :??: Parce que ca va donner un fichier XML invalide, donc pas exploitable par les parseurs XML classiques


 
Salut,
 
Oui ne t'inquiète pas, la concaténation des 2 donnera un fichier XML valide c'est sûr et certain, sinon je ne me lancerais pas dans ce problème !
 
Merci.
@+

Reply

Marsh Posté le 17-11-2010 à 11:39:05    

C'est Ok, problème résolu.
Merci pour le coup de main pataluc, ça m'a bien aidé.
 

Reply

Marsh Posté le 17-11-2010 à 11:41:11    

nicomes a écrit :


 
Salut,
 
Merci pour la réponse, mais ça ne va pas, il se mélange complétement. Il faut réunir Exxxx1 et Dxxxx1 dans le même fichier xml, dans cet ordre (d'abord le fichier qui commence par E puis l'autre par D). Comment lui indiquer le bon ordre ?  
 
Merci pour ton aide.
@+ tard


 
ben tu enchaines

Code :
  1. cat E${f}.xml >> ${f}.xml
  2. cat D${f}.xml >> ${f}.xml


au lieu de

Code :
  1. cat *${f}.xml >> ${f}.xml


:spafamote:
 

nicomes a écrit :


 
Salut,
 
Oui ne t'inquiète pas, la concaténation des 2 donnera un fichier XML valide c'est sûr et certain, sinon je ne me lancerais pas dans ce problème !
 
Merci.
@+


 
la je suis en phase avec kadreg, un fichier xml valide commence par un prologue

Code :
  1. <?xml version="1.0"?>

et comporte un seul élément racine... en concaténant, tu va avoir 2 prologues et 2 fois le même élément racine... il faudra penser à en jarter un avec un grep -v par exemple, et a mettre un nouvel élément racine autour des 2 autres...

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed