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 :

XML::Simple et DATA::Dumper


Sujet :

Modules Perl

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    801
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 801
    Par défaut XML::Simple et DATA::Dumper
    Bonjour à tous,
    Je crois que j'ai un problème de compréhension.
    J'ai un fichier XML dont je ne connais pas la structure.

    J'ai fait ce tout petit code:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    #!c:\perl\bin\perl.exe
     
    use XML::Simple;
    use Data::Dumper;
     
    $XMLFile="./Exemple.xml";
    $StructureFile="structure.csv";
     
     
    my $xml= XMLin($XMLFile);
    %dumper= Dumper($xml);
    Mais à partir de là, je bloque complétement. Comment faire pour récupérer le structure du fichier XML (les noeuds) et les avoir dans un fihcier csv sous forme d'arborescence.
    Comment exploiter ce que me ressort Dumper pour récupérer que les clés ?

  2. #2
    Membre éclairé Avatar de scaleo
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    327
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 327
    Par défaut
    Ont peut voir ton xml.
    J'ai trouvé sa sur google http://www.perlishpatterns.com/code/xml2csv

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    801
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 801
    Par défaut
    Bonjour Scaleo !

    Voilà le XML, je n'en connais pas la structure

    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
    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
     
    <BizTalk xmlns="urn:schemas-biztalk-org:BizTalk/biztalk-0.81.xml">
            <Body xmlns="">
            <RequisitionList>
                    <Requisition xmlns="urn:schemas-biztalk-org:baan-com/Requisition">
                            <Requisitioner>
                                  <CommonName></CommonName>
                                  <GivenName></GivenName>
                            </Requisitioner>
                            <ReferenceNumber></ReferenceNumber>
                            <BillToAddress xmlns="urn:schemas-biztalk-org:baan-com/Address">
                                    <NAME1>SNECMA</NAME1>
                                    <NAME2>SERVICE FOURNISSEUR (AGCR)</NAME2>
                                    <STREET1>BP 82</STREET1>
                                    <STREET2></STREET2>
                                    <CITY1>EVRY (CEDEX)</CITY1>
                                    <CITY2></CITY2>
                                    <STATEPROVINCE></STATEPROVINCE>
                                    <ZIPCODE>91003</ZIPCODE>
                                    <COUNTRYCODE></COUNTRYCODE>
                                    <COUNTRYNAME></COUNTRYNAME>
                                    <PHONE></PHONE>
                                    <FAX></FAX>
                                    <SHORTDESCRIPTION></SHORTDESCRIPTION>
                            </BillToAddress>
                            <Id>214318 /  10</Id>
                            <Supplier>
                                    <BusinessId>003022</BusinessId>
                                    <SupplierName>xxxxxxxxx                  </SupplierName>
                                    <ShipFromAddress xmlns="urn:schemas-biztalk-org:baan-com/Address">
                                            <NAME1>xxxxxxxxx                  </NAME1>
                                            <NAME2>                              </NAME2>
                                            <STREET1>yyy yyyyyy      </STREET1>
                                            <STREET2>                              </STREET2>
                                            <CITY1>18020 BOURGES CEDEX           </CITY1>
                                            <CITY2>                              </CITY2>
                                            <STATEPROVINCE>          </STATEPROVINCE>
                                            <ZIPCODE>18020     </ZIPCODE>
                                            <COUNTRYCODE> FR</COUNTRYCODE>
                                            <COUNTRYNAME>France                        </COUNTRYNAME>
                                            <PHONE>xx xx cc cc     </PHONE>
                                            <FAX>48652316       </FAX>
                                            <SHORTDESCRIPTION></SHORTDESCRIPTION>
                                    </ShipFromAddress>
                            </Supplier>
                            <DeliveryAddress xmlns="urn:schemas-biztalk-org:baan-com/Address">
                                    <NAME1>SNECMA Usine  de CORBEIL           </NAME1>
                                    <NAME2>Service AC, Batiment BA, burea</NAME2>
                                    <STREET1>Route Nationale 7, BP 81      </STREET1>
                                    <STREET2>                              </STREET2>
                                    <CITY1>EVRY CEDEX                    </CITY1>
                                    <CITY2></CITY2>
                                    <STATEPROVINCE></STATEPROVINCE>
                                    <ZIPCODE>91003     </ZIPCODE>
                                    <COUNTRYCODE> FR</COUNTRYCODE>
                                    <COUNTRYNAME>France                        </COUNTRYNAME>
                                    <PHONE></PHONE>
                                    <FAX></FAX>
                                    <SHORTDESCRIPTION>L-AC                          </SHORTDESCRIPTION>
                            </DeliveryAddress>
                            <Commodity>   S50</Commodity>
                            <CostType>
                                    <CostDescription> </CostDescription>
                                    <CostAccount></CostAccount>
                            </CostType>
                            <Unit>EA </Unit>
                            <ItemDescription>JEU COMPLET BRISE-COPEAUX REF </ItemDescription>
                            <Quantity>5            </Quantity>
                            <Pricing>
                                    <UnitCost>12.18       </UnitCost>
                                    <Currency>EUR</Currency>
                                    <DiscountPercentage>0     </DiscountPercentage>
                                    <DiscountAmount>0           </DiscountAmount>
                                    <TaxPercentage>19.6      </TaxPercentage>
                            </Pricing>
                            <Contract>
                                    <ContractCode></ContractCode>
                                    <ContractLine></ContractLine>
                            </Contract>
                            <ReferenceNumber></ReferenceNumber>
                            <SnecmaPartNumber>90008207302     </SnecmaPartNumber>
                            <ShipToContactInformation></ShipToContactInformation>
                            <Properties>
                                     <Colour></Colour>
                                     <MemSize></MemSize>
                            </Properties>
                            <Remark></Remark>
                            <LineSearchCode></LineSearchCode>
                            <DateRequired>04/08/2002</DateRequired>
                            <Buyer>SEGURA Antonio                     </Buyer>
                            <ECollaboration>
                                    <DOCTYPE-ID ></DOCTYPE-ID>
                                    <RECEIVER></RECEIVER>
                                    <CONTACT></CONTACT>
                                    <BUSINESSPARTNER></BUSINESSPARTNER>
                            </ECollaboration>
                            <AcknowledgementURL xmlns="">
                             HTTP://e_procurement.snecma/e_procurement/E-Requisition/Integration/acknowledge.asp?field=XMLINPUT
                            </AcknowledgementURL>
                     </Requisition>
             </RequisitionList>
      </Body>
     </BizTalk>

  4. #4
    Expert confirmé
    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
    Par défaut
    Citation Envoyé par LE NEINDRE
    Mais à partir de là, je bloque complétement. Comment faire pour récupérer le structure du fichier XML (les noeuds) et les avoir dans un fihcier csv sous forme d'arborescence.
    Tu ne peux pas avoir de structure arborescente en CSV, quel doit être ton format de sortie ? Donne un exemple de ce que tu veux faire, sinon il va nous être très difficile de t'aider.

    --
    Jedaï

  5. #5
    Mr6
    Mr6 est déconnecté
    Membre émérite

    Homme Profil pro
    Inscrit en
    Septembre 2004
    Messages
    608
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Secteur : Service public

    Informations forums :
    Inscription : Septembre 2004
    Messages : 608
    Par défaut
    Est-ce que tu ne chercherais pas tout simplement à afficher %dumper dans un fichier ?
    J'ai regardé la doc, j'ai l'impression que tu veux faire ca :
    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
     
    #!C:\Perl\bin\perl.exe
     
    use strict;
    use XML::Simple;
    use Data::Dumper;
     
    my $XMLFile="test.xml";
    my $StructureFile="test.csv";
     
    open STRUCT, ">".$StructureFile or die "$!\n";
     
    my $xml= XMLin($XMLFile);
    print STRUCT Data::Dumper->Dump([$xml], [qw(*xml)]);
    close (STRUCT);
    Je me trompe ?

    edit :
    manifestement :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    my %dumper = Dumper($xml);
    foreach my $key (keys %dumper) {
    	print STRUCT "$key";
    }
    est équivalent à :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    print STRUCT Data::Dumper->Dump([$xml], [qw(*xml)]);

  6. #6
    Membre éclairé
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    801
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 801
    Par défaut
    Bonjour à tous et désolé pour cette réponse tardive ...

    J'ai été confus dans mon post.
    Ce que je cherche à faire c'est tranformé un fichier xml.
    Je voudrais récupérer les données du fichier afin de les insérer dans un autre fichier qui aura un autre format (format Edifact).

    Mon problème, c'est que j'ai sous la main un fichier xml dont je ne connais pas la structure. J'aurais aimé en extraire les champs (la valeur des balises en fait) et les afficher dans une base de donnée ou un fichier excel ou csv.

    Exemple, j'ai le fichier xml suivant:
    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
     
    <noeud_principal>
    <noeud_Principal>
          <balise_1>
                <balise_11>valeur_0</balise_11>
                <balise_11>valeur_1</balise_11>
                <balise_22>valeur_3</balise_22>
          </balise_1>
          <balise_2>
                <balise_21>valeur_4</balise_21>
                <balise_22>valeur_5</balise_22>
                      <balise_221>valeur_6</balise_221>
                <balise_23>valeur_7</balise_23>
          </balise_2>
    </noeud_Principal>
    Je voudrais récupérer balise_11 (pas valeur_0), balise_22 ..... de façon structurée.
    Donc dumper fais ceci mais comment récupérer uniquement les clé de dumper ??
    Excusez moi si je suis pas clair, j'arrive pas à bien formuler ce que je veux faire ...

  7. #7
    Expert confirmé
    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
    Par défaut
    Dumper ne sert normalement que dans la phase préliminaire, où tu essaie de comprendre quelle forme a ta structure de donnée recrachée par XML::Simple. Ensuite tu parcours la structure de donnée comme d'habitude (il faut être un peu à l'aise avec les structures de données en Perl).

    Voici un exemple vu récemment sur le forum :
    http://www.developpez.net/forums/sho...d.php?t=153941

    --
    Jedaï

Discussions similaires

  1. Réponses: 2
    Dernier message: 20/05/2009, 17h19
  2. XML::Simple -> Parser 2 niveaux
    Par gpo23 dans le forum Modules
    Réponses: 4
    Dernier message: 27/05/2006, 08h57
  3. Problème XML::Simple & image::Magick
    Par rori dans le forum Modules
    Réponses: 5
    Dernier message: 17/05/2006, 17h02
  4. Problème avec XML::Simple
    Par ViRouF dans le forum Modules
    Réponses: 7
    Dernier message: 10/04/2006, 17h17
  5. problème pour parser un fichier xml avec XML::Simple
    Par black_code dans le forum Modules
    Réponses: 3
    Dernier message: 30/01/2006, 19h32

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