p
u
b
l
i
c
i
t
é
publicité
  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 : 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
    17 683
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : avril 2004
    Messages : 17 683
    Points : 492 606
    Points
    492 606

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

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

    Informations forums :
    Inscription : avril 2004
    Messages : 17 683
    Points : 492 606
    Points
    492 606

    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 !

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