Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1003 connectés 

  FORUM HardWare.fr
  Programmation
  Perl

  Fichier XML Ajout/Suppression de ligne

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Fichier XML Ajout/Suppression de ligne

n°1756126
Sethenssen
Posté le 06-07-2008 à 22:17:05  profilanswer
 

Bonjour,
 
Je débute dans l'utilisation de commande shell/perl, j'essai un maximum de récupérer ici et là des bout de ligne de code pour réussir ce que je souhaite mais maintenat ça coince.
 
Mon but est de concaterner des fichiers XML, de supprimer des lignes avec un contenu précis, les lignes vides et ajouter une ligne en début et fin de fichier de résultat. Ceci pour traiter cet XML directement dans Excel.
 
Déjà je fais du ligne par ligne dans un nouveau fichier résultat, je voudrais aussi apprendre à executer toutes ces lignes en un seul programme.
 
Setup:
J'utilise Cygwin sur ma machine (PC, Windows XP)
Donc je concatene tout mes XML en 1 fichier.
 
cd /cygdrive/d/Files/_.files/xml/

Code :
  1. cat *.xml.success > test.xml


 
Ensuite je veux supprimer ce qui commence par <?xml version="1.0" encoding="UTF-8"?>
perl -ne 'print unless /<?xml ver/' test.xml > test1.xml
 
Je veux supprimer toutes les lignes vides de mon fichier

Code :
  1. cat test1.xml | tr -s '\n' > test2.xml


Mais ceci ne marche pas.
 
Après cela coince car certaines lignes commence par un espace, ou avec des balises </ et cela ne marche pas avec

Code :
  1. perl -ne 'print unless /'</PurchaseProvider>'/' test.xml > test2.xml


 
Expected Result:
- Supprimer toutes les lignes vides
- Supprimer toutes les lignes qui contiennent "<VODContentProvider" (la ligne entière, pas seulement ces caractères dans la ligne, mais bien la ligne entière dès qu'il y a ces caractères)
- Supprimer toutes les lignes qui contiennent "</VODContentProvider" (idem)
- Supprimer tout les commentaires du fichier "<!-- Métada"
- Supprimer toutes les lignes qui contient "xmlns:xsi="http"
- Supprimer toutes les lignes qui contient "xsi:noNamespaceSchemaLocation"
 
Une fois épuré rajouter ces 2 lignes pour qu'Excel puisse le traiter.
Au début du fichier:
- <VODContentProvider id="TST" name="TEST" scheduleDate="2008-05-27T16:10:06Z"
En fin de fichier:
- </VODContentProvider>
 
Tout ceci sur mon fichier concaténé test.xml, et si possible en utilisant simplement via cygwin en executant un script qui contient tou ce nettoyage.
Exemple:
./script_nettoyage.pl
 
Exemple d'un début de fichier XML:

Code :
  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <VODContentProvider id="TST" name="TEST" scheduleDate="2008-05-27T16:10:06Z"
  3. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  4. xsi:noNamespaceSchemaLocation="VODContentProviderMultiProduct_2.4.xsd">
  5. <!-- Metadata d'un film -->
  6. <Content id="TST0100000005" title="Titre de film" duration="6300" action="override">
  7.  <EpgDescription locale="fr_FR">
  8.   <EpgElement key="Title">Titre de film</EpgElement>
  9.   <EpgElement key="Synopsis">synospis</EpgElement>
  10.   <EpgElement key="Description">description</EpgElement>
  11.   <EpgElement key="ShortTitle">Titre de film</EpgElement>
  12.   <EpgElement key="Copyright">TEST</EpgElement>
  13.  </EpgDescription>
  14.  <EpgDescription>
  15.   <EpgElement key="Rating">0</EpgElement>
  16.   <EpgElement key="IsRecordable">0</EpgElement>
  17.   <EpgElement key="AudioPID">zho</EpgElement>
  18.   <EpgElement key="Directors">Chu Yuan</EpgElement>
  19.   <EpgElement key="Actors">Lily Li,Tsung Hua</EpgElement>
  20.   <EpgElement key="Year">1973</EpgElement>
  21.   <EpgElement key="Language">zho</EpgElement>
  22.   <EpgElement key="PromoImage">TST0100000005.jpg</EpgElement>
  23.   <EpgElement key="Categories">Action</EpgElement>
  24.   <EpgElement key="Countries">CN</EpgElement>
  25.   <EpgElement key="Subtitles">fra</EpgElement>
  26.  </EpgDescription>
  27.  <Media id="TST0000000005" title="Titre de film ts" fileName="TST0000000005.mpg" frameDuration="157500" action="override" />
  28. </Content>
  29. <!-- Métadata de l'offre rattaché au média -->
  30. <VodItem id="TST0400000005" title="Titre de film" broadcasterId="TST" previewDate="2008-05-20T02:33:20Z" contentRef="TST0100000005" nodeRefList="TSTFRA1002" action="override">
  31.  <EpgDescription locale="fr_FR">
  32.   <EpgElement key="Title">Titre de film</EpgElement>
  33.   <EpgElement key="DisplayPriority">100</EpgElement>
  34.  </EpgDescription>
  35.  <Period start="2008-05-27T22:00:00Z" end="2008-11-21T22:59:59Z"/>
  36. </VodItem>
  37. <Product id="TST0500000005" currency="EUR" price="3.99" rentalDuration="172800" type="single" regions="France"  >
  38.  <AddToProduct elementKind="VodItem" elementId="TST0400000005"/>
  39. </Product>
  40. </VODContentProvider>
  41. <?xml version="1.0" encoding="UTF-8"?>
  42. <VODContentProvider id="TST" name="TEST" scheduleDate="2008-06-20T12:50:17Z">
  43. <!-- Metadata d'un film -->


 
Actual Result:  
Je ne réussi qu'a concatener et supprimer des lignes qui commence sans espace et sans commencer par </  
Donc pas terrible.  
 
Si un demi dieu de perl/grep/sed ou autre peut m'aider cela m'enleverai une énorme épine du pied et me ferait gagner un gain de temps énorme vous ne pouvez pas imaginer.  
 
Merci d'avance,  
Je suis disponible pour toutes questions si besoin.

mood
Publicité
Posté le 06-07-2008 à 22:17:05  profilanswer
 

n°1756198
anapajari
s/travail/glanding on hfr/gs;
Posté le 07-07-2008 à 09:52:36  profilanswer
 

question 1 : t'es obligé de te servir de bash ET de perl ou tu peux tout faire en perl si tu as envie?
question 2 : tu as le droit de te servir de module de la CPAN? (genre simpleXML)


---------------
Software and cathedrals are much the same - first we build them, then we pray.
n°1756630
Sethenssen
Posté le 08-07-2008 à 00:37:07  profilanswer
 

Bonsoir,
 
Peut importe du moment que j'arrive au résultat escompté.
 
Je ne connais pas du tout, mais idem que ma réponse 1.


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  Perl

  Fichier XML Ajout/Suppression de ligne

 

Sujets relatifs
Bien organiser ses fichier flash CS3[VB.NET] Fichier txt vers excel
Fichier de config d'une assembly dans un projet webMauvaise reconnaissance de la fin d'un fichier
SQL Server - BULK INSERT sur un fichier csv avec guillemetsRecherche de caractère dans un nom de fichier
Paramètres pour fichier bat a l'ouverture de session[Résolu] Batch confirmation d'ajout d'une imprimante en réseaux !
Impossible de lire le code VBA d'un fichier Excel avec Excel 2007convetir fichier excel /html puis l'envoyer.tout cela en ligne de cmde
Plus de sujets relatifs à : Fichier XML Ajout/Suppression de ligne


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR