shadow1779
Messages postés706Date d'inscriptionmercredi 17 novembre 2004StatutMembreDernière intervention29 septembre 2013
-
13 nov. 2008 à 11:59
shadow1779
Messages postés706Date d'inscriptionmercredi 17 novembre 2004StatutMembreDernière intervention29 septembre 2013
-
16 nov. 2008 à 21:42
Bonjour,
je suis en train de développer un portail et j'aurai besoin de réaliser ma propre classe pour lire des flux RSS, actuellement j'ai trouvé une alternative avec Simple_XML mais bon cela ne me convient pas en tant que développeur, j'aimerai arriver a creuser dans le fonctionnement du code quand on parse du xml plutot que d'utiliser du managé (qui en soit marche très bien pour ce qu'on lui demande de faire).
Voici actuellement ma méthode en utilisant DOMdocument(); mais cela me renvoi une erreur, (pourtant j'ai beau regarder le peu de source sur le sujet ca me semble pas si horrible que ca :D
Erreur retournée: Fatal error: Call to a member function getElementsByTagName() on a non-object in C:\Program Files\EasyPHP 2.0b1\www\schoolmate\models\CDrssReader.class.php on line 44
Methode: public function manualReadXML($url){
// on affecte l'url et le message de test
$this->url = $url;
$ret = 'Test RSS:
';
// on récupère le contenu du flux
$this->getContent($url);
// on initialise DOMDocument pour parser le flux
$dom = new DOMDocument();
$dom->load($this->content);
// puis dans le premier <channel>
$channels = $dom->getElementsByTagName('channel')->item(0);
// puis on liste les balise
$dataset = $channels->getElementsByTagName('item'); // c'est elle la ligne 44 ^^
// pour chaque on récupère son <title> et son <link>
for($i = 0; $i < 5; $i++){
$item = $dataset->item($i);
$title = $item->getElementsByTagName("title")->item(0)->nodeValue;
$link = $item->getElementsByTagName("link")->item(0)->nodeValue;
// on retourne cela sous forme de lien
$ret .= '<li class="feed">['.$link.' '.$title.']</li>';
}
malalam
Messages postés10839Date d'inscriptionlundi 24 février 2003StatutMembreDernière intervention 2 mars 201025 15 nov. 2008 à 11:48
Hello,
DOMDocument::getElementsByTagName() renvoie une DOMNodeList.
DOMNodeList::item() renvoie un DOMNode.
Un node, c'est un noeud, PAS l'élément.
DOMElement étend DOMNode, pas l'inverse.