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 :

Module XML::Simple erreur


Sujet :

Modules Perl

  1. #1
    Candidat au Club
    Homme Profil pro
    Développeur / Concepteur
    Inscrit en
    Février 2012
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur / Concepteur

    Informations forums :
    Inscription : Février 2012
    Messages : 3
    Points : 2
    Points
    2
    Par défaut Module XML::Simple erreur
    bonjour,
    j'essaie d'utiliser le module XML:Simple ci dessous le script
    mon fichier xml
    cat /oracle/oraInventory/ContentsXML/inventory.xml
    Code xml : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    <?xml version="1.0" standalone="yes" ?>
    <!-- Copyright (c) 2001 Oracle Corporation. All rights Reserved -->
    <!-- Do not modify the contents of this file by hand. -->
    <INVENTORY>
    <VERSION_INFO>
       <SAVED_WITH>2.2.0.18.0</SAVED_WITH>
       <MINIMUM_VER>2.1.0.6.0</MINIMUM_VER>
    </VERSION_INFO>
    <HOME_LIST>
    <HOME NAME="OUIHome" LOC="/oracle/product/ora920" TYPE="O" IDX="1"/>
    </HOME_LIST>
    </INVENTORY>
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    my $oraxml = "/oracle/oraInventory/ContentsXML/inventory.xml";
    my $xml = new XML::Simple;
    my $in = $xml->XMLin($oraxml);
    my @oraxml = ();
    foreach my $oraxml (@{$in->{HOME_LIST}->{HOME}}){
          @version = split(/\//, $oraxml->{LOC});
          print $version[3];
    }
    avec un print dumper ca donne 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
    $VAR1 = {
              'HOME_LIST' => {
                               'HOME' => {
                                           'NAME' => 'OUIHome',
                                           'IDX' => '1',
                                           'LOC' => '/oracle/product/ora920',
                                           'TYPE' => 'O'
                                         }
                             },
              'VERSION_INFO' => {
                                  'MINIMUM_VER' => '2.1.0.6.0',
                                  'SAVED_WITH' => '2.2.0.18.0'
                                }
            };
    mon problème c'est que quand j’exécute le script j'ai le message suivant :

    runWithTimeout(): unexpected error: Not an ARRAY reference

  2. #2
    Responsable Perl et Outils

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

    Informations forums :
    Inscription : Avril 2004
    Messages : 19 820
    Points : 499 184
    Points
    499 184
    Par défaut
    Bonsoir,

    $in->{HOME_LIST}->{HOME} n'est pas un tableau mais une table de hachage, donc, votre boucle n'est pas bien écrite.

    Voici votre programme corrigé (mais pas testé) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    my $oraxml  = "/oracle/oraInventory/ContentsXML/inventory.xml";
    my $xml     = new XML::Simple;
    my $in      = $xml->XMLin($oraxml);
    my @version = split /\//, $in->{HOME_LIST}{HOME}{LOC};
    print $version[3];

  3. #3
    Candidat au Club
    Homme Profil pro
    Développeur / Concepteur
    Inscrit en
    Février 2012
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur / Concepteur

    Informations forums :
    Inscription : Février 2012
    Messages : 3
    Points : 2
    Points
    2
    Par défaut
    et si j'ai plusieurs lignes on fait comment ??
    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
     
    <?xml version="1.0" standalone="yes" ?>
    <!-- Copyright (c) 2001 Oracle Corporation. All rights Reserved -->
    <!-- Do not modify the contents of this file by hand. -->
    <INVENTORY>
    <VERSION_INFO>
       <SAVED_WITH>11.2.0.1.0</SAVED_WITH>
       <MINIMUM_VER>2.1.0.6.0</MINIMUM_VER>
    </VERSION_INFO>
    <HOME_LIST>
    <HOME NAME="OraDb11g_home1" LOC="/oracle/product/11.2.0.2.0" TYPE="O" IDX="1"/>
    <HOME NAME="OraDb10g_home1" LOC="/oracle/product/10.2.0.4" TYPE="O" IDX="2"/>
    <HOME NAME="OraDb11g_home2" LOC="/oracle/product/11.2.0.1.0" TYPE="O" IDX="3"/>
    </HOME_LIST>
    </INVENTORY>

  4. #4
    Responsable Perl et Outils

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

    Informations forums :
    Inscription : Avril 2004
    Messages : 19 820
    Points : 499 184
    Points
    499 184
    Par défaut
    Étant donné que je m'attendais à ce genre de questions , je recommande d'utiliser le module XML::Twig. Cela permet d'avoir un code simple et robuste.
    Voici un article qui permet d'expliquer ce choix.

Discussions similaires

  1. Réponses: 2
    Dernier message: 08/05/2012, 13h37
  2. [XML] TinyXml -> Erreur?
    Par JulienDuSud dans le forum Bibliothèques
    Réponses: 6
    Dernier message: 08/08/2007, 21h17
  3. erreur avec XML::Simple
    Par Melvine dans le forum Modules
    Réponses: 26
    Dernier message: 13/10/2006, 11h52
  4. [XML::Simple] Problème d'accès au module Parseur
    Par Melvine dans le forum Modules
    Réponses: 6
    Dernier message: 09/10/2006, 10h40

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