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

Langage Perl Discussion :

[debutant]L'affichage du content de xml


Sujet :

Langage Perl

  1. #1
    Membre du Club
    Inscrit en
    Janvier 2007
    Messages
    37
    Détails du profil
    Informations forums :
    Inscription : Janvier 2007
    Messages : 37
    Points : 42
    Points
    42
    Par défaut [debutant]L'affichage du content de xml
    Bonjour,
    J'ai d'un probleme de affichier content de noeud de xml

    C'est le resultat de recherche de google desktop en format xml
    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
    <?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
    <results count="24945">
    <result>
      <category>web</category> 
      <!-- ... optional internal, implementation-specific elements such as ids and flags... --> 
      <title>Developer Knowledge Base - Read the Google Desktop blog</title> 
      <url>http://code.google.com/support/bin/answer.py?answer=66869&topic=10434</url> 
      <time>128243290079530000</time> 
      <snippet>Desktop engineers regularly post development articles and announce updates to the &lt;b&gt;SDK&lt;/b&gt; and documentation. Here are some interesting posts from the past: New</snippet> 
      <thumbnail>/thumbnail?id=6%5Fvwps3QA4FIYGAAAA&s=wgQCmjGl0VEzw3KVhm3mxBG_x48</thumbnail> 
      <icon>/icon?id=http%3A%2F%2Fcode%2Egoogle%2Ecom%2F&s=kKR1by-QXDMlb5vEhxkDZhCv3eE</icon> 
      <cache_url>http://127.0.0.1:4664/...</cache_url> 
    </result>
     
    ...
     
    </results>

    Je veux affichier le resultat de <results count="24945"> et le content entre <title> ....</title>
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    #ici le $doc est resultat de recherche de google desktop en format xml
    my $doc = get "$newQuery"; 
    my $queryReturn = XMLin($doc);
    print "$mot: $queryReturn->{count}\n";
    cet partie de code peut affichier le resultat de count

    mais pour affichier le resultat de title
    j'ai utilise
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    #print "	title".$queryReturn->{results->{result}->{title}->{content}}."\n";
    ca ne marche pas.
    comment je doit faire pour affichier le content entre <title>...</title>?

  2. #2
    Membre du Club
    Inscrit en
    Janvier 2007
    Messages
    37
    Détails du profil
    Informations forums :
    Inscription : Janvier 2007
    Messages : 37
    Points : 42
    Points
    42
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    while ($doc =~ s/<title>([^<]+\.xml)//) {
    	print "$1\n";
    }
    ce n'est pas la meilleur solution je pense

  3. #3
    Membre du Club
    Inscrit en
    Février 2007
    Messages
    34
    Détails du profil
    Informations personnelles :
    Âge : 61

    Informations forums :
    Inscription : Février 2007
    Messages : 34
    Points : 44
    Points
    44
    Par défaut
    Utiliser une regex n'est pas à mon sens la meilleure solution, même si ça peut dépanner.

    En utilisant XML::Simple - ce qui est quand même un peu plus propre... - tu peux récupérer dans la tableau @taResults les résultats, qu'il ne reste plus qu'à afficher, par exemple de la façon suivante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    my @taResults = @{$queryReturn->{'result'}};
    my $iNbResults = scalar(@taResults);
     
    for (my $iNoResult = 0; $iNoResult < $iNbResults; $iNoResult++)
    {
        print $taResults[$iNoResult]->{'title'}[0] . "\n";
    }
    Attention, il y a un gros piège s'il n'y a qu'une seule réponse : dans ce cas, XMLIn par défaut ne fait pas un tableau. Il faut l'y contraindre en utilisant l'option ForceArray :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    my $queryReturn = eval { XMLin($doc, (ForceArray => 1, SuppressEmpty => 0))} ;
    Au passage, par habitude, j'ai aussi mis SuppressEmpty à 0, je ne sais plus trop ce que ça fait, cf. la doc de XML::Simple.

    Pour voir facilement la tête de tes données, tu peux utiliser le module Data:umper :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    use Data::Dumper;
    ...
    print Dumper($queryReturn);
    Jako

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

Discussions similaires

  1. [Debutant] Probleme affichage d'une image
    Par iutcien dans le forum AWT/Swing
    Réponses: 4
    Dernier message: 16/11/2006, 15h13
  2. Réponses: 10
    Dernier message: 07/06/2006, 11h12
  3. [DEBUTANT][HTML] affichage d'une image dans une page
    Par nimport nawak dans le forum Balisage (X)HTML et validation W3C
    Réponses: 5
    Dernier message: 12/04/2005, 19h50
  4. [Info][Debutant(e)]affichage temps reel
    Par nine dans le forum Développement Web en Java
    Réponses: 15
    Dernier message: 26/11/2004, 17h03
  5. Optimiser l'affichage d'un fichier XML de grosse taille...
    Par UnPeuPerdu dans le forum XML/XSL et SOAP
    Réponses: 11
    Dernier message: 03/06/2004, 16h01

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