Se connecter / S'enregistrer
Votre question

problème de conversion d'un objet en string

Tags :
  • string
  • Programmation
Dernière réponse : dans Programmation
11 Juin 2008 14:09:40

Bonjour j'ai un petit problème de conversion en php avec du XML
Je parse un fichier XML en php où je récupère le fils <url> du noeud <image>
par la méthode

$doc = new DomDocument();
$doc->load("fichier.xml");
$items = $channel->getElementsByTagName("item");
$img = $item->getElementsByTagName("image");
$image = $img->getElementByTagName("url")->nodeValue;


mais à l'affichage j'ai l'erreur suivant:

Object of class DOMNodeList could not be converted to string

si quelqu'un a une idée pour m'aider je suis à l'écoute merci

Autres pages sur : probleme conversion objet string

a c 232 L Programmation
11 Juin 2008 14:41:28

il faut que tu fasses des boucles pour boucler sur tes éléments, car là tu récupères un tableau d'éléments.
$items = $channel->getElementsByTagName("item" ); <= te retourne un tableau de tous les éléments qui sont de type <item>, donc faut mettre un foreach(...)
$img = $item->getElementsByTagName("image" ); <= idem

Ou sinon, tu récupères le premier élément du tableau directement.
11 Juin 2008 14:46:45

oui j'ai fai déja un foreach sur $items
mais c'est toujours le meme

merci
Contenus similaires
a c 232 L Programmation
11 Juin 2008 14:49:45

bah faut le fait sur img aussi ... ou sinon mettre un getElementByTagName (sans s)
11 Juin 2008 14:51:22

ok je vais voir sa et je te dirai ce que sa donne

merci
11 Juin 2008 15:04:47

j'ai essayer avec les deux en faisant getElementByTagName et ossi le foreach mais toujrs le meme message d'erreur

merci
a c 232 L Programmation
11 Juin 2008 15:07:31

et c'est quelle ligne l'erreur, et ça correspond à quelle ligne ?
11 Juin 2008 15:20:01

Voici mon code en quelque sorte

<?php
function RSS_Channel($channel)
{
global $Common_Content;

$items = $channel->getElementsByTagName("item");
// Extration de l'entêt du podcast
RSS_Tags($channel, 0); // get description of channel, type 0
// Extration des information des Episodes
foreach($items as $item)
RSS_Tags($item, 1); // get description of article, type 1
}

function RSS_Retrieve($url)
{
global $Common_Content;

$doc = new DomDocument;
$doc->loadXML($url);

/*$doc = new DomDocument("1.0", "UTF-8");//();
$doc->load($url);*/

$channels = $doc->getElementsByTagName("channel");

$Common_Content = array();

foreach($channels as $channel)
RSS_Channel($channel);

return ( count($Common_Content) > 0);
}


function RSS_Tags($item, $type)
{
global $Common_Content;
$y = array();
$x = array();
//Extration des information sur le titre du Podcast et ses épisodes
$y["title"] = $item->getElementsByTagName("title")->item(0)->firstChild->data;
//Extration des information sur le tag du Podcast et ses épisodes
$tag = $item->getElementsByTagNameNS("http://www.itunes.com/dtds/podcast-1.0.dtd", "category");
if($tag->length!=0)
{
for($i=0; $i<$tag->length; $i++)
{
$tag_att = $tag->item($i)->hasAttribute("text");
if($tag_att == false)
array_push($x,$item->getElementsByTagNameNS("http://www.itunes.com/dtds/podcast-1.0.dtd", "category")->item($i)->nodeValue);
else
array_push($x,$item->getElementsByTagNameNS("http://www.itunes.com/dtds/podcast-1.0.dtd", "category")->item($i)->getAttribute("text"));
}
}
elseif($item->getElementsByTagName("category")->length!=0)
{
for($i=0; $i<$item->getElementsByTagName("category")->length; $i++)
{
$tag_att = $item->getElementsByTagName("category")->item($i)->hasAttribute("text");
if($tag_att == false)
array_push($x,$item->getElementsByTagName("category")->item($i)->nodeValue);
else
array_push($x,$item->getElementsByTagName("category")->item($i)->getAttribute("text"));
}
}
else
$y["category"]="";
$y["category"] = $x;
//Extration des information sur l'auteur du Podcast et ses épisodes
$auteur = $item->getElementsByTagNameNS("http://www.itunes.com/dtds/podcast-1.0.dtd", "author");
if($tag->length!=0)
$auteur =$item->getElementsByTagNameNS("http://www.itunes.com/dtds/podcast-1.0.dtd", "author")->item(0)->nodeValue;
elseif($item->getElementsByTagName("author")->length!=0)
$auteur = $item->getElementsByTagName("author")->item(0)->nodeValue;
else
$auteur = false;
$y["author"] = $auteur;
//Extration des information sur le lien url du Podcast et ses épisodes
/*$link = $item->getElementsByTagName("link")->item(0)->getAttribute("href");
if($link==false)
$link = $item->getElementsByTagName("link")->item(0)->firstChild->data;
$y["link"] = $link;//$item->getElementsByTagName("link")->item(0)->firstChild->data;*/
$link = $item->getElementsByTagName("link");
if($link != false)
{
if($link->item(0)->hasAttribute("href") == false)
$link = $link->item(0)->firstChild->data;
else
$link = $item->getElementsByTagName("link")->item(0)->getAttribute("href");
}
else
$link = false;
$y["link"] = $link;
//Extration des information sur le lien url des épisodes
$guid = $item->getElementsByTagName("guid");
if($guid->length!=0)
$guid = $guid->item(0)->firstChild->data;
elseif($item->getElementsByTagName("enclosure")->length!=0)
$guid = $item->getElementsByTagName("enclosure")->item(0)->getAttribute("url");
else
$guid = false;
$y["guid"] = $guid;
//Extration des information sur la description du Podcast
$desc = $item->getElementsByTagNameNS("http://www.itunes.com/dtds/podcast-1.0.dtd", "summary");
if($desc->length!=0)
$desc = $item->getElementsByTagNameNS("http://www.itunes.com/dtds/podcast-1.0.dtd", "summary")->item(0)->nodeValue;
elseif($item->getElementsByTagName("description")->length!=0)
$desc = $item->getElementsByTagName("description")->item(0)->nodeValue;
else
$desc = false;
$y["description"] = $desc;
//Extration des information sur le tag du Podcast
$date = $item->getElementsByTagName("pubDate");
if($date->length == 0)
$date = $item->getElementsByTagName("lastBuildDate")->item(0)->firstChild->data;
elseif($date->length != 0)
$date =$date->item(0)->firstChild->data;
else
$date = false;
$y["updated"] = $date;

//Extraction de l'adresse url de l'image ou du logo du podcast
$image = $item->getElementsByTagNameNS("http://www.itunes.com/dtds/podcast-1.0.dtd", "image");
//$images = $item->getElementsByTagName("image");
if($image->length!=0)
{
$image_att = $image->item(0)->hasAttribute("url");
if($image_att != false)
$image = $item->getElementsByTagNameNS("http://www.itunes.com/dtds/podcast-1.0.dtd", "image")->item(0)->getAttribute("url");
//else
//$image = $image->getElementByTagName("url")->nodeValue;
}
elseif($item->getElementsByTagName("image")->length!=0)
{
if($item->getElementsByTagName("image")->item(0)->hasAttribute("url") != false)
$image = $item->getsElementByTagName("image")->item(0)->getAttribute("url");
else
{
$img = $item->getElementByTagName("image");
$image = $img->getElementByTagName("url")->nodeValue;
}
}
else
$image = false;
$y["image"] = $image;
$y["type"] = $type;
array_push($Common_Content, $y);
}


function podcast_Display($string, $size, $chanopt = false, $descopt = false, $dateopt = false)
{
global $Common_Content;
global $Common_Style;
global $Common_Date_Font;

$opened = false;
$page = "";
//if(Atom_Retrieve($string) == false)
//{
if(RSS_Retrieve($string) == false)
return "<br>$string vide...<br>";
//}
if($size !=0)
$recents = array_slice($Common_Content, 0, $size+1);
else
$recents = array_slice($Common_Content, 0);
//Parcours du tableau contenant les
foreach($recents as $article)
{
$type = $article["type"];
$title = $article["title"];
$link= $article["link"];
$url_episode = $article["guid"];
$tag = $article["category"];
$image = $article["image"];
if($type == 0)
{
if($chanopt != true) continue;
if($opened == true)
{
$page .="</ul>\n";
$opened = false;
}
$page .="<b>";
$page .= "<".$Common_Style."><a href=\"$link\">$title</a><br>";
for($i=0; $i<sizeof($tag); $i++)
$page .= "$tag[$i]<br>";
$page .= "<br>$image";
//print_r($tag);
}
else
{
if($opened == false && $chanopt == true)
{
$page .= "<ul>\n";
$opened = true;
}
$page .= "<".$Common_Style."><a href=\"$url_episode\">$title</a><br>";
for($i=0; $i<sizeof($tag); $i++)
$page .= "$tag[$i]<br>";
//print_r($tag);
}

if($descopt != false)
{
$description = $article["description"];
if($description != false)
$page .= "$description";
}
if($dateopt != false)
{
$updated = $article["updated"];
if($updated != false)
$page .= "<br /><font $Common_Date_Font>$updated</font>";
}
$page .= "</".$Common_Style.">\n";
if($type == 0)
$page .="</b>";
}
if($opened == true)
$page .="</ul>\n";
return $page."\n";
}
?>


et j'appel la fonction podcast_Display()

et j'ai l'erreur au signalé au nivo de laparti mise en gras dans la fonction podcast_Display()

merci
a c 232 L Programmation
12 Juin 2008 10:31:04

Hello,

Il n'y a qu'une seule possibilité pour que tu aies cette erreur (je pense), c'est que ça aille dans :
  1. //Extraction de l'adresse url de l'image ou du logo du podcast
  2. $image = $item->getElementsByTagNameNS("http://www.itunes.com/dtds/podcast-1.0.dtd", "image" );
  3. //$images = $item->getElementsByTagName("image" );
  4. if($image->length!=0)
  5. {
  6. $image_att = $image->item(0)->hasAttribute("url" );
  7. if($image_att != false)
  8. $image = $item->getElementsByTagNameNS("http://www.itunes.com/dtds/podcast-1.0.dtd", "image" )->item(0)->getAttribute("url" );
  9. //else
  10. //$image = $image->getElementByTagName("url" )->nodeValue;
  11. }


A ce niveau là, si $image_att est égal à false, tu vas te retrouver avec un tableau dans la variable image
12 Juin 2008 10:41:12

ok je vais y voir celui là
merci
Tom's guide dans le monde
  • Allemagne
  • Italie
  • Irlande
  • Royaume Uni
  • Etats Unis
Suivre Tom's Guide
Inscrivez-vous à la Newsletter
  • ajouter à twitter
  • ajouter à facebook
  • ajouter un flux RSS