Bonjour,
Pour la gestion de mon site que je nommerais ici www.monsite.biz (bien sûr, ce n'est pas la véritable url), je dois créer un sitemap conforme aux normes du sitemap News de Google.
J'ai réussi à créer les fichiers sitemap (par mois) et l'index sitemap contenant les url de ces fichiers mensuels.
Je bloque actuellement sur la génération de cet index. Je dois d'abord lire ma base de données de façon à récupérer la date de la dernière news (ça je sais le faire). Ensuite lire le fichier xml correspondant au mois de cette news (ça aussi j'ai réussi à le faire). Etape suivante, lire la date de la dernière news:publication_date à partir de ce fichier (c'est là que je bloque).
J'utilisais auparavant une classe (DomAdapter) mais depuis mon passage sur php5, je reçois une erreur sur ce script :
qui est censé lire un fichier xml sous cette forme.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13 $fichier=sprintf("sIte%04d-%02d.xml",$year,$month); if (file_exists($fichier)) { $xml = new DOMAdapter(); $doc = $xml->createDocument("urlset"); $doc->load($fichier); $loca = $doc->documentElement->childNodes; $nombre = $loca->length; $dernier = $loca->item($nombre-1); $val = $dernier->childNodes; $data = $val->item(1); $dateX = $data->nodeValue; }
L'erreur est Fatal error: Call to a member function item() on a non-object in script.php on line 33<?xml version="1.0" encoding="UTF-8"?>
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9" xmlns:news="http://www.google.com/schemas/sitemap-news/0.9">
<url>
<loc>http://www.monsite.biz/2/2008-05-08/57184.html</loc>
<news:news>
<news:publication_date>2008-05-08</news:publication_date>
</news:news>
</url>
<url>
<loc>http://www.monsite.biz/2/2008-05-08/57185.html</loc>
<news:news>
<news:publication_date>2008-05-08</news:publication_date>
</news:news>
</url>
<url>
<loc>http://www.monsite.biz/2/2008-05-08/57186.html</loc>
<news:news>
<news:publication_date>2008-05-08</news:publication_date>
</news:news>
</url>
<url>
<loc>http://www.monsite.biz/2/2008-05-08/57187.html</loc>
<news:news>
<news:publication_date>2008-05-08</news:publication_date>
</news:news>
</url>
</urlset>
Cette ligne contient $data = $val->item(1);
Cette portion de script est censée lire le fichier et récupérer la date 2008-05-08 pour la vérification citée plus haut.
Il faut savoir que ça fonctionne en local avec PHP Version 5.1.2, DOM/XML API Version 20031129, libxml Version 2.6.22 mais pas sur mon serveur hébergé avec PHP Version 5.2.5., DOM/XML API Version 20031129, libxml Version 2.6.32.
J'ai cru comprendre qu'il s'agit d'un problème de version qui est incompatible avec cette classe.
Je dois me résoudre alors à utiliser les fonctions DOM et pas cette classe mais je ne sais vraiment pas comment faire pour lire l'info dont j'ai besoin.
Merci de votre patience et de votre aide.
Partager