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

Bibliothèques et frameworks PHP Discussion :

[DOM] Parser RSS 2.0 et 1.0


Sujet :

Bibliothèques et frameworks PHP

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    21
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2006
    Messages : 21
    Points : 16
    Points
    16
    Par défaut [DOM] Parser RSS 2.0 et 1.0
    Bonjour, je cherche à afficher le contenu de flux RSS 2.0 et/ou 1.0
    Le 2.0 ne me pose aucun problème, contrairement au 1.0 ...

    Par exemple, pour récupérer la date, ceci fonctionne:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    $dates = $xpath->query('//item/pubDate');
    Alors que ceci pas:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    $dates = $xpath->query('//item/dc:date');
    Je parviens à récupérer les dates du 1.0 comme ceci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    $dates = $xpath->query('//dc:date');
    Mais la date de mise à jour du flux est récupérée également. Pour récupérer le titre du flux, j'ai essayé ceci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    $dates = $xpath->query('//channel/title');
    C'est ok pour le RSS 2.0 mais pas 1.0.

    A noter que récupérer la date (par exemple) avec getElementsByTagName('dc:date') ne fonctionne pas non plus.

    Pourriez-vous m'aider à cerner le problème?

  2. #2
    Membre à l'essai
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    21
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2006
    Messages : 21
    Points : 16
    Points
    16
    Par défaut
    J'ai trouvé une solution au problème en procédant comme ceci, ci ça peut intéresser quelqu'un. Le problème en question vient des espaces de noms.

    Voici l'entête du flux
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" 
    xmlns:dc="http://purl.org/dc/elements/1.1/" 
    xmlns:sy="http://purl.org/rss/1.0/modules/syndication/" 
    xmlns:admin="http://webns.net/mvcb/" 
    xmlns:content="http://purl.org/rss/1.0/modules/content/" 
    xmlns="http://purl.org/rss/1.0/">
    L'espace de noms du noeud dc:date est:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    xmlns:dc="http://purl.org/dc/elements/1.1/"
    Pour récupérer les dates:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    $date = $item->getElementsByTagNameNS('http://purl.org/dc/elements/1.1/','date');
    Plus d'infos: http://be.php.net/manual/fr/function...ytagnamens.php

    Voilà, j'espère que ça peut être utile. Néanmoins je suis toujours prenneur pour une solution permettant l'utilisation de xpath

  3. #3
    Expert éminent sénior

    Profil pro
    Inscrit en
    Juin 2002
    Messages
    6 152
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 6 152
    Points : 17 777
    Points
    17 777
    Par défaut
    Enregistrez les namespaces (DOMXPath->registerNamespace()) avant votre requête :
    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
    <?php
    $dom = new DomDocument;
    $dom->preserveWhiteSpace = FALSE;
    $dom->formatOutput = TRUE;
    $dom->load('http://blog.developpez.com/xmlsrv/rdf.php?blog=1');
     
    $xpath = new DomXPath($dom);
    $ns = array(
        'ds' => 'http://purl.org/rss/1.0/',
        'rdf' => 'http://www.w3.org/1999/02/22-rdf-syntax-ns#',
        'dc' => 'http://purl.org/dc/elements/1.1/',
        'sy' => 'http://purl.org/rss/1.0/modules/syndication/',
        'admin' => 'http://webns.net/mvcb/',
        'content' => 'http://purl.org/rss/1.0/modules/content/',
    );
    foreach ($ns as $prefix => $uri) {
        $xpath->registerNamespace($prefix, $uri);
    }
    foreach ($xpath->query('//ds:item[contains(dc:date, "2007-10-26")]/ds:title') as $n) {
        echo utf8_decode($n->nodeValue) . '<br />';
    }

  4. #4
    Membre à l'essai
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    21
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2006
    Messages : 21
    Points : 16
    Points
    16
    Par défaut
    Merci beaucoup pour ton aide julp, c'est exactement ce dont j'avais besoin

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

Discussions similaires

  1. [Ajax] [HTML] [DOM] Parser du Html (texte) en Html DOM ou en DOM
    Par thibaut dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 30/11/2007, 14h44
  2. [OpenOffice] [Macro OOBasic] controle Tree dans dialogue & DOM Parser.
    Par azerr dans le forum OpenOffice & LibreOffice
    Réponses: 0
    Dernier message: 21/11/2007, 09h13
  3. [Dates] Parser RSS gestion des dates
    Par ochimin dans le forum Langage
    Réponses: 2
    Dernier message: 17/06/2007, 15h01
  4. [DOM] Parser XML et wikipedia
    Par trihanhcie dans le forum Bibliothèques et frameworks
    Réponses: 6
    Dernier message: 29/05/2006, 10h35
  5. [JAXB/DOM] Parser Xml : possible avec path reel et non uri !
    Par Jaxofun dans le forum Servlets/JSP
    Réponses: 7
    Dernier message: 01/08/2005, 10h04

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