Juste par curiosité, après avoir obtenu votre XML (je l'espère, je le détruis didnt't dans le processus - Je vais voir si je peux modifier l'OP pour le corriger):
- avez-vous jeté la description à une chaîne?
Ce que je veux dire est que vous pouvez utiliser ceci:
$xml = simplexml_load_string($str);
foreach ($xml->channel->item as $item) {
var_dump($item->description);
}
mais il ne vous obtenir que:
object(SimpleXMLElement)[5]
object(SimpleXMLElement)[3]
Ce qui est pas belle ...
Vous devez convertir les données en chaîne, comme ceci:
$xml = simplexml_load_string($str);
foreach ($xml->channel->item as $item) {
var_dump((string)$item->description);
}
Et vous obtenez les descriptions:
string '
This is one of the content that I need printed on the screen, but nothing is happening. Please, please...output something... <br /><br /> <b>Showing</b>: 2 weeks<br /> <b>Starting On</b>: August 7, 2009 <br /> <b>Posted On</b>: August 7, 2009 <br />
<a href="http://www.mysite.com">click to view</a>
' (length=329)
string '
Another content...This is another of the content that I need printed on the screen, but nothing is happening. Please, please...output something... <br /><br /> <b>Showing</b>: 2 weeks<br /> Starting On: August 7, 2009 <br /> <b>Posted On</b>: August 7, 2009
;
' (length=303)
(En utilisant trim
sur ceux qui pourraient se révéler utiles, d'ailleurs, si vous XML est indenté)
Else ... Eh bien , nous aurons probablement besoin de votre code PHP (au moins, serait utile de savoir comment vous arrivez à l'description
tag ;-))
EDIT
Merci pour le XML reformatées!
Si je vais à Pastebin, dans la zone de texte au bas de la page, il y a un espace blanc au début du XML, avant la <?xml version="1.0" encoding="utf-8"?>
Si vous avez qu'un dans vos données XML réelles, ce sera une source de problème: il n'est pas valide XMl (la déclaration XML doit être la première chose dans les données XML).
Vous obtiendrez des erreurs comme celle-ci:
Warning: simplexml_load_string() [function.simplexml-load-string]: Entity: line 1: parser error : XML declaration allowed only at the start of the document
Pouvez-vous vérifier?
Et, si le problème est ici, vous devez activer error_reporting
et display_errors
;-) Cela aiderait!
EDIT après avoir pris un coup d'oeil au fichier PHP:
Dans votre boucle, vous faites cela pour obtenir vos données de description:
$item_desc = $x->item($i)->getElementsByTagName('description')->item(0)->childNodes->item(0)->nodeValue;
Description ne contient aucun childNode , Je dirais ; Qu'en est-il de l'utilisation de nodeValue directement?
Comme ceci:
$item_desc = $x->item($i)->getElementsByTagName('description')->item(0)->nodeValue;
Il semble fonctionner mieux de cette façon :-)
En tant que sidenote, vous pourriez probablement faire la même chose pour les autres balises, je suppose; par exemple, cela semble fonctionner aussi:
$item_title=$x->item($i)->getElementsByTagName('title')->item(0)->nodeValue;
$item_link=$x->item($i)->getElementsByTagName('link')->item(0)->nodeValue;
Qu'est-ce que cela vous donne?
Une autre EDIT: et voici le code que je serais probablement utiliser:
$xmlDoc = new DOMDocument();
$xmlDoc->loadXML($str); // I changed that because I have the XML data in a string
//get elements from "<channel>"
$channel = $xmlDoc->getElementsByTagName('channel')->item(0);
$channel_title = $channel->getElementsByTagName('title')->item(0)->nodeValue;
$channel_link = $channel->getElementsByTagName('link')->item(0)->nodeValue;
$channel_desc = $channel->getElementsByTagName('description')->item(0)->nodeValue;
//output elements from "<channel>"
echo "<p><a href='" . $channel_link . "'>" . $channel_title . "</a>";
echo "<br />";
echo $channel_desc . "</p>";
//get and output "<item>" elements
$x = $xmlDoc->getElementsByTagName('item');
for ($i=0 ; $i<=1 ; $i++) {
$item_title = $x->item($i)->getElementsByTagName('title')->item(0)->nodeValue;
$item_link = $x->item($i)->getElementsByTagName('link')->item(0)->nodeValue;
$item_desc = $x->item($i)->getElementsByTagName('description')->item(0)->nodeValue;
echo ("<p><a href='" . $item_link
. "'>" . $item_title . "</a>");
echo ("<br />");
echo ($item_desc . "</p>");
echo' <p />';
}
Remarque J'ai les données XML dans une chaîne, et je ne dois pas le chercher à partir d'une URL, donc j'utilise la méthode loadXML
et non load
. La différence majeure est que j'ai supprimé certains accès childNodes, que je ne pensais pas nécessaires.
Cela vous semble-t-il correct?
Pouvez-vous également publier la partie de code qui est en charge de l'analyse des données XML? Peut-être que le bug est dans le code, et pas dans les données ^^ –
Avez-vous toujours le code XML et PHP? Pastebin a supprimé vos entrées. Si vous les avez, pourriez-vous éditer la question pour les ramener (ne les remettez pas sur pastebin, placez-les dans le texte de la question à la place.) Si vous ne pouvez pas, la question sera supprimée. Merci. –
ID de pâte inconnue! – GoodSp33d