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 :

Problème de parsing RSS


Sujet :

Langage Perl

  1. #1
    Membre à l'essai
    Inscrit en
    Juin 2006
    Messages
    18
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 18
    Points : 11
    Points
    11
    Par défaut Problème de parsing RSS
    Bonjour à tous,

    Je souhaite parser un fichier XML au format RSS. J'utilises donc le module XML::RSS

    Je n'ai aucun problème à récupérer le contenu de toutes les balises, sauf une. Je pense que ça provient du nom de la balise. La balise dont je n'arrive pas à récupérer le contenu s'appelle <content:encoded>, et je pense que c'est le ":" à l'intérieur de la balise qui provoque le dysfonctionnement.

    J'ai d'autres balises comme <title> et <description> dont le programme perl me retourne les données. Aucune donnée m'est retournée avec les données en provenance de <content:encoded>

    Voici un résumé du programme :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    my $rss = new XML::RSS;
    $rss->parsefile($input);
    for my $i (@{$rss->{items}})
    {
    my $title = $i->{title}; # OK, contenu récupéré
    my $content = $i->{"content:encoded"}; # Retourne RIEN
    }
    Dans l'exemple ci-dessus, je récupére des données de la balise <title>, mais aucune de la balise <content:encoded>. Que dois-je faire pour être capable de récupérer les données de <content:encoded> ?

  2. #2
    Membre éprouvé Avatar de MarneusCalgarXP
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    911
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 911
    Points : 1 118
    Points
    1 118
    Par défaut

    Je ne répond à aucune question technique par MP.

    Si votre problème est réglé, n'oubliez pas Dans tous les cas

  3. #3
    Membre éprouvé Avatar de MarneusCalgarXP
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    911
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 911
    Points : 1 118
    Points
    1 118
    Par défaut
    A priori, il faudrait plutot rechercher le contenu de la balise "content", car "encoded" n'est qu'une sous partie de cette balise.

    Essaie d'afficher le contenu de la hashmap de la manière suivante:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    use Data::Dumper;
     
    my $rss = new XML::RSS;
    $rss->parsefile($input);
    for my $i (@{$rss->{items}})
    {
        my $title = $i->{title}; # OK, contenu récupéré
        # affiche le contenu de $i
        print(Dumper($i));
    }

    Je ne répond à aucune question technique par MP.

    Si votre problème est réglé, n'oubliez pas Dans tous les cas

  4. #4
    Membre à l'essai
    Inscrit en
    Juin 2006
    Messages
    18
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 18
    Points : 11
    Points
    11
    Par défaut J'ai trouvé la solution
    J'ai trouvé la solution, il fallait utiliser ce code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    my $content = $i->{content}->{encoded};
    Par-contre, j'ai encore un problème. Ce contenu est dans une contenu de type CDATA.

    Voici un extrait du xml :
    <content:encoded><![CDATA[contenu textuel de la balise]]></content:encoded>
    Je n'arrive pas à récupérer le contenu car c'est dans un CDATA. Comment faire pour récupérer le contenu du CDATA à l'intérieur de la balise ?

  5. #5
    Membre éprouvé Avatar de MarneusCalgarXP
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    911
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 911
    Points : 1 118
    Points
    1 118
    Par défaut
    que donne le résultat du print Dumper($i) ?

    Je ne répond à aucune question technique par MP.

    Si votre problème est réglé, n'oubliez pas Dans tous les cas

  6. #6
    Membre à l'essai
    Inscrit en
    Juin 2006
    Messages
    18
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 18
    Points : 11
    Points
    11
    Par défaut print Dumper
    Voici ce que donne mon print Dumper($i) :

    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
    $VAR1 = {
              'link' => 'http://www....',
              'permaLink' => 1,
              'dc' => {
                        'creator' => 'contenu textuel'
                      },
              'item' => '
                    ',
              'http://purl.org/rss/1.0/modules/content/' => {
                                                            'encoded' => 'contenu textuel avec balises html
    '
                                                          },
              'description' => 'contenu textuel',
              'title' => 'contenu textuel',
              'http://purl.org/dc/elements/1.1/' => {
                                                    'creator' => 'contenu textuel'
                                                  },
              'date' => 'date'
            };
    
    
    
    Rien à faire, j'arrive pas à récupérer <content:encoded>. J'ai essayé avec :
    my $content = $i->{content}->{encoded};
    et avec 
    my $content = $i->{encoded};
    et avec 
    my $content = $i->{content};
    et avec
    my $content = $i->{item}->{content}->{encoded};
    J'ai besoin d'aide, je n'arrive vraiment pas à récupérer le contenu de cette balise...

  7. #7
    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 : 498 771
    Points
    498 771
    Par défaut
    Je tiens à te préciser Nanji de mettre tes codes sous balises code (le diese) la prochaine fois

  8. #8
    Membre éprouvé Avatar de MarneusCalgarXP
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    911
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 911
    Points : 1 118
    Points
    1 118
    Par défaut
    Essaie avec:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    print $i->{'http://purl.org/rss/1.0/modules/content/'}{'encoded'}

    Je ne répond à aucune question technique par MP.

    Si votre problème est réglé, n'oubliez pas Dans tous les cas

  9. #9
    Membre à l'essai
    Inscrit en
    Juin 2006
    Messages
    18
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 18
    Points : 11
    Points
    11
    Par défaut ca marche !
    Ca marche ! Merci beaucoup MarneusCalgarXP, mon problème est résolu !

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

Discussions similaires

  1. [DOM] Problème de parsing avec DomParser
    Par iam_free dans le forum Format d'échange (XML, JSON...)
    Réponses: 6
    Dernier message: 21/04/2006, 09h33
  2. [DOM] [DocumentBuilder] Problème de parsing de fichier
    Par tck-lt dans le forum Format d'échange (XML, JSON...)
    Réponses: 9
    Dernier message: 13/04/2006, 17h18
  3. [Tableaux] problème de parse error
    Par Invité dans le forum Langage
    Réponses: 6
    Dernier message: 06/04/2006, 21h37
  4. [JDOM] Problème de Parsing JDOM
    Par RapidJul dans le forum Format d'échange (XML, JSON...)
    Réponses: 3
    Dernier message: 06/10/2005, 12h09
  5. [SAX] Problème de parsing ?
    Par Regis.C dans le forum Format d'échange (XML, JSON...)
    Réponses: 8
    Dernier message: 22/06/2005, 21h48

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