Publicité
+ Répondre à la discussion
Affichage des résultats 1 à 4 sur 4
  1. #1
    Invité de passage
    Homme Profil pro
    Inscrit en
    février 2012
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : février 2012
    Messages : 3
    Points : 0
    Points
    0

    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 :
    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 :
    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 :
    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
    16 760
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : avril 2004
    Messages : 16 760
    Points : 490 698
    Points
    490 698

    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 :
    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];

    Pas de questions technique par messagerie privée (lisez les règles du forum Perl) et pour les nouveaux !

  3. #3
    Invité de passage
    Homme Profil pro
    Inscrit en
    février 2012
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : février 2012
    Messages : 3
    Points : 0
    Points
    0

    Par défaut

    et si j'ai plusieurs lignes on fait comment ??
    Code :
    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
    16 760
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : avril 2004
    Messages : 16 760
    Points : 490 698
    Points
    490 698

    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.

    Pas de questions technique par messagerie privée (lisez les règles du forum Perl) et pour les nouveaux !

Liens sociaux

Règles de messages

  • Vous ne pouvez pas créer de nouvelles discussions
  • Vous ne pouvez pas envoyer des réponses
  • Vous ne pouvez pas envoyer des pièces jointes
  • Vous ne pouvez pas modifier vos messages
  •