IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Modules Perl Discussion :

Fichier XML Ajout/Suppression de ligne


Sujet :

Modules Perl

  1. #1
    Membre du Club
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    70
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juillet 2008
    Messages : 70
    Points : 49
    Points
    49
    Par défaut Fichier XML Ajout/Suppression de ligne
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    cat *.xml.success > test.xml
    Ensuite je veux supprimer ce qui commence par <?xml version="1.0" encoding="UTF-8"?>
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    perl -ne 'print unless /<?xml ver/' test.xml > test1.xml
    Je veux supprimer toutes les lignes vides de mon fichier
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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 "xmlnssi="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 : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    <?xml version="1.0" encoding="UTF-8"?>
    <VODContentProvider id="TST" name="TEST" scheduleDate="2008-05-27T16:10:06Z" 
    	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    	xsi:noNamespaceSchemaLocation="VODContentProviderMultiProduct_2.4.xsd">
    <!-- Metadata d'un film -->
    	<Content id="TST0100000005" title="Titre de film" duration="6300" action="override">
    		<EpgDescription locale="fr_FR">
    			<EpgElement key="Title">Titre de film</EpgElement>
    			<EpgElement key="Synopsis">synospis</EpgElement>
    			<EpgElement key="Description">description</EpgElement>
    			<EpgElement key="ShortTitle">Titre de film</EpgElement>
    			<EpgElement key="Copyright">TEST</EpgElement>
    		</EpgDescription>
    		<EpgDescription>
    			<EpgElement key="Rating">0</EpgElement>
    			<EpgElement key="IsRecordable">0</EpgElement>
    			<EpgElement key="AudioPID">zho</EpgElement>
    			<EpgElement key="Directors">Chu Yuan</EpgElement>
    			<EpgElement key="Actors">Lily Li,Tsung Hua</EpgElement>
    			<EpgElement key="Year">1973</EpgElement>
    			<EpgElement key="Language">zho</EpgElement>
    			<EpgElement key="PromoImage">TST0100000005.jpg</EpgElement>
    			<EpgElement key="Categories">Action</EpgElement>
    			<EpgElement key="Countries">CN</EpgElement>
    			<EpgElement key="Subtitles">fra</EpgElement>
    		</EpgDescription>
    		<Media id="TST0000000005" title="Titre de film ts" fileName="TST0000000005.mpg" frameDuration="157500" action="override" />
    	</Content>
     
     
     
     
    	<!-- Métadata de l'offre rattaché au média -->
    	<VodItem id="TST0400000005" title="Titre de film" broadcasterId="TST" previewDate="2008-05-20T02:33:20Z" contentRef="TST0100000005" nodeRefList="TSTFRA1002" action="override">
    		<EpgDescription locale="fr_FR">
    			<EpgElement key="Title">Titre de film</EpgElement>
    			<EpgElement key="DisplayPriority">100</EpgElement>
    		</EpgDescription>
    		<Period start="2008-05-27T22:00:00Z" end="2008-11-21T22:59:59Z"/>
    	</VodItem>
    	<Product id="TST0500000005" currency="EUR" price="3.99" rentalDuration="172800" type="single" regions="France"  >
    		<AddToProduct elementKind="VodItem" elementId="TST0400000005"/>
    	</Product>
     
    </VODContentProvider>
    <?xml version="1.0" encoding="UTF-8"?>
    <VODContentProvider id="TST" name="TEST" scheduleDate="2008-06-20T12:50:17Z">
    <!-- 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 langage utilisé par cygwin 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.

  2. #2
    Expert éminent
    Avatar de Jedai
    Homme Profil pro
    Enseignant
    Inscrit en
    Avril 2003
    Messages
    6 245
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Avril 2003
    Messages : 6 245
    Points : 8 586
    Points
    8 586
    Par défaut
    Pour supprimer les lignes vides :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    perl -ne 'print unless m{^\s*$}' file
    Pour tes </ :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    perl -ne 'print unless m{</PurchaseProvider>}'
    En fait pour la totale :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    perl -ne 'BEGIN { print q{<VODContentProvider id="TST" name="TEST" scheduleDate="2008-05-27T16:10:06Z">\n} END { print q{</VODContentProvider>} } s/<!--.*?-->//g; print unless m{<?xml|</?VODContentProvider|xmlns:xsi="http|xsi:noNamespaceSchemaLocation|^\s*$}' file1.xml file2.xml file... >final_file.xml
    --
    Jedaï

  3. #3
    Membre du Club
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    70
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juillet 2008
    Messages : 70
    Points : 49
    Points
    49
    Par défaut
    merci beaucoup je vais tester cela !

Discussions similaires

  1. [DOM] ajout suppression de ligne dans plusieurs tableau
    Par Invité dans le forum Général JavaScript
    Réponses: 9
    Dernier message: 27/06/2008, 16h33
  2. Réponses: 1
    Dernier message: 22/04/2008, 11h24
  3. Ajout/Suppression de ligne dans un tableau
    Par Nimothenicefish dans le forum WinDev
    Réponses: 2
    Dernier message: 14/02/2008, 11h56
  4. [XML] ajout/suppression d'un node avec xml::xyz
    Par LFC dans le forum Modules
    Réponses: 2
    Dernier message: 11/07/2007, 20h25
  5. Réactualiser la taille d'un Fichier DBF après suppression de lignes
    Par oiapoque dans le forum Bases de données
    Réponses: 2
    Dernier message: 24/07/2006, 13h52

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo