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 :

Parse XML et extraction des données voulues


Sujet :

Modules Perl

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Septembre 2012
    Messages
    52
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2012
    Messages : 52
    Par défaut Parse XML et extraction des données voulues
    Salut,

    Je cherche à extraire des données d'un gros, très gros fichier XML.

    Voici le type d'arborescence:
    Code xml : 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
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
     <MeasDataCollection>
        <measFileHeader>
            <fileFormatVersion>1</fileFormatVersion>
            <senderName>
                4F 50 54 4E 43 2F 42 53 43 50 4B 35 2F 47 31 31 
                42 2F 49 50 41 33 20
            </senderName>
            <senderType></senderType>
            <vendorName>45 72 69 63 73 73 6F 6E</vendorName>
            <collectionBeginTime>20120807220000Z</collectionBeginTime>
        </measFileHeader>
        <measData>
            <MeasData>
                <nEId>
                    <nEUserName></nEUserName>
                    <nEDistinguishedName></nEDistinguishedName>
                </nEId>
                <measInfo>
                    <MeasInfo>
                        <measTimeStamp>20120807221500Z</measTimeStamp>
                        <granularityPeriod>900</granularityPeriod>
                        <measTypes>
                            <MeasType>49 50 53 45 4E 54 4B 42 59 54 45 53</MeasType>
                            <MeasType>49 50 52 45 43 4B 42 59 54 45 53</MeasType>
                            <MeasType>49 50 4C 4F 53 54 50 41 43 4B 55 4C</MeasType>
                            <MeasType>49 50 4E 55 4D 53 43 41 4E</MeasType>
                            <MeasType>49 50 55 4C 52 45 43 50 41 43 4B</MeasType>
                            <MeasType>49 50 44 4C 53 45 4E 54 50 41 43 4B</MeasType>
                            <MeasType>44 4C 37 30 37 35 53 54 4E 4C 4F 41 44</MeasType>
                            <MeasType>44 4C 37 36 38 30 53 54 4E 4C 4F 41 44</MeasType>
                            <MeasType>44 4C 38 31 38 35 53 54 4E 4C 4F 41 44</MeasType>
                            <MeasType>44 4C 38 36 39 30 53 54 4E 4C 4F 41 44</MeasType>
                            <MeasType>44 4C 39 31 39 35 53 54 4E 4C 4F 41 44</MeasType>
                            <MeasType>44 4C 39 36 30 30 53 54 4E 4C 4F 41 44</MeasType>
                            <MeasType>55 4C 37 30 37 35 53 54 4E 4C 4F 41 44</MeasType>
                            <MeasType>55 4C 37 36 38 30 53 54 4E 4C 4F 41 44</MeasType>
                            <MeasType>55 4C 38 31 38 35 53 54 4E 4C 4F 41 44</MeasType>
                            <MeasType>55 4C 38 36 39 30 53 54 4E 4C 4F 41 44</MeasType>
                            <MeasType>55 4C 39 31 39 35 53 54 4E 4C 4F 41 44</MeasType>
                            <MeasType>55 4C 39 36 30 30 53 54 4E 4C 4F 41 44</MeasType>
                            <MeasType>44 4C 31 30 30 53 54 4E 4C 4F 41 44</MeasType>
                            <MeasType>55 4C 31 30 30 53 54 4E 4C 4F 41 44</MeasType>
                            <MeasType>49 50 4F 56 4C 4C 31</MeasType>
                            <MeasType>49 50 4F 56 4C 4C 32</MeasType>
                            <MeasType>50 53 44 49 53 43 4F 56 4C</MeasType>
                            <MeasType>43 53 44 49 53 43 4F 56 4C</MeasType>
                            <MeasType>49 50 4F 56 4C 43 53 52 45 47</MeasType>
                            <MeasType>49 50 4F 56 4C 50 53 52 45 47</MeasType>
                        </measTypes>
                        <measValues>
                            <MeasValue>
                                <measObjInstId>41 42 49 53 49 50 2E 52 58 4F 54 47 2D 35 31</measObjInstId>
                                <measResults>
                                        <iValue>63576</iValue>
     
                                        <iValue>60332</iValue>
     
                                        <iValue>0</iValue>
     
                                        <iValue>900</iValue>
     
                                        <iValue>131844</iValue>
     
                                        <iValue>143268</iValue>
     
                                        <iValue>0</iValue>
     
                                        <iValue>0</iValue>
     
                                        <iValue>0</iValue>
     
                                        <iValue>0</iValue>
     
                                        <iValue>0</iValue>
     
                                        <iValue>0</iValue>
     
                                        <iValue>0</iValue>
     
                                        <iValue>0</iValue>
     
                                        <iValue>0</iValue>
     
                                        <iValue>0</iValue>
     
                                        <iValue>0</iValue>
     
                                        <iValue>0</iValue>
     
                                        <iValue>0</iValue>
     
                                        <iValue>0</iValue>
     
                                        <iValue>0</iValue>
     
                                        <iValue>0</iValue>
     
                                        <iValue>0</iValue>
     
                                        <iValue>0</iValue>
     
                                        <iValue>0</iValue>
     
                                        <iValue>0</iValue>
                                </measResults>
    ..............
    La première "iValue" correspond au premier "MeasType", la deuxième correspond au deuxième, ainsi de suite...

    Dans cet exemple il n'y a qu'un seul "measObjInstId", en réalité il y en a 254 je crois.

    Le but de mon script Perl est de sortir toutes les ivalues pour chaque measObjInstId avec le nom correspondant aux ivalues.

    Exemple:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Objet1:
       Type1 = valeur1
       Type2 = valeur2
       Type3 = valeur3
       ...
    Objet2:
       Type1=valeur1
       Type2 = valeur2
       Type3 = valeur3
       ...
    J'ai essayé des choses mais je n'y arrive pas car les types de valeur sont en dehors des balises "measObjInstId".

    Pouvez vous m'aider?

    Merci

  2. #2
    Responsable Perl et Outils

    Avatar de djibril
    Homme Profil pro
    Inscrit en
    Avril 2004
    Messages
    19 822
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 19 822
    Par défaut
    Bonjour,

    Qu'avez-vous essayé ?

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Septembre 2012
    Messages
    52
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2012
    Messages : 52
    Par défaut
    Le code est sur un autre PC, là je ne l'ai pas mais j'arrive à peu près à extraire ce que je veux mais "ligne par ligne", en gros j'ai:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Type1
    Type2
    Type3
    Objet1
    Value1
    Value2
    Value3
    Objet2
    Value1
    Value2
    ...
    Le problème c'est que je veux quelque chose du genre:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Objet1
    Type1 = Value1
    Type2 = Value2
    Type3 = Value3
    Objet2
    Type1 = Value1
    Type2 = Value2
    Type3 = Value3
    Une idée?

  4. #4
    Responsable Perl et Outils

    Avatar de djibril
    Homme Profil pro
    Inscrit en
    Avril 2004
    Messages
    19 822
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 19 822
    Par défaut
    Pour analyser un fichier XML, je vous recommande d'utiliser un parser comme je l'explique dans cette documentation : http://djibril.developpez.com/tutoriels/perl/perl-xml/.

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Septembre 2012
    Messages
    52
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2012
    Messages : 52
    Par défaut
    Cette documentation je l'ai déjà lue, elle m'a été très utile mais je ne trouve pas de solution à mon problème.

    Je vais peut être me répéter mais par exemple j'ai 250 objets, 250 séries de 7 values, et une seule série de 7 types.
    Ces 7 types sont des indicateurs pour chaque série de 7 values.
    Je ne sais pas comment faire apparaître le nom de l'indicateur devant la value à chaque fois que ça se présente...

    Votre documentation m'a aidé pour extraire des champs compris entre des balises mais pour faire ce que je veux ici, je ne comprends pas

  6. #6
    Responsable Perl et Outils

    Avatar de djibril
    Homme Profil pro
    Inscrit en
    Avril 2004
    Messages
    19 822
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 19 822
    Par défaut
    Je vous recommande de nous montrer votre programme. On ne va pas s'amuser à en faire un de toute pièce de novo.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Extraction des données des tables SQL en XML avec MKFramework
    Par amooola86 dans le forum MkFramework
    Réponses: 16
    Dernier message: 27/06/2014, 10h15
  2. [JDOM] Extraction des données à partir du XML
    Par paulcomt dans le forum Format d'échange (XML, JSON...)
    Réponses: 3
    Dernier message: 27/09/2010, 17h01
  3. extraction des données du xml et hashmap
    Par vanesa dans le forum Format d'échange (XML, JSON...)
    Réponses: 1
    Dernier message: 05/03/2008, 17h57
  4. [DOM] parsing de xml et traitement des données
    Par vincent62149 dans le forum Format d'échange (XML, JSON...)
    Réponses: 2
    Dernier message: 04/03/2008, 10h06
  5. [débutant]extraction des données d'un fichier xml simple
    Par ekram dans le forum Format d'échange (XML, JSON...)
    Réponses: 3
    Dernier message: 14/03/2007, 12h24

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