Nur aus Neugier, nach dem XML immer (ich hoffe, dass ich es in dem Prozess zerstören didnt't - ich werde sehen, ob ich die OP bearbeiten kann es zu korrigieren):
- hast du die Beschreibung in eine Zeichenkette umgewandelt?
Was ich meine ist, dass Sie diese verwenden:
$xml = simplexml_load_string($str);
foreach ($xml->channel->item as $item) {
var_dump($item->description);
}
Aber es würde Sie nur bekommen, dass:
object(SimpleXMLElement)[5]
object(SimpleXMLElement)[3]
was nicht so schön ist ...
Sie müssen die Daten wie folgt in eine Zeichenfolge umwandeln:
$xml = simplexml_load_string($str);
foreach ($xml->channel->item as $item) {
var_dump((string)$item->description);
}
Und Sie die Beschreibungen erhalten:
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)
(Mit trim
auf denen vielleicht als nützlich erweisen, btw, wenn Sie XML Einbuchtungen)
Else ... Gut , wir werden wahrscheinlich Ihren PHP-Code brauchen (zumindest wäre es nützlich zu wissen, wie Sie zum description
Tag kommen ;-))
EDIT
Danke für die Reformierte XML!
Wenn ich auf Pastebin gehen, in das Textfeld am unteren Rand der Seite befindet sich ein Leerraum am Anfang des XML, vor dem <?xml version="1.0" encoding="utf-8"?>
Wenn Sie, dass in Ihrem echten XML-Daten haben, Es wird eine Quelle von Problemen sein: Es ist kein gültiges XMl (die XML-Deklaration muss das erste Ding in den XML-Daten sein).
Sie werden diese Fehler wie man bekommen:
Warning: simplexml_load_string() [function.simplexml-load-string]: Entity: line 1: parser error : XML declaration allowed only at the start of the document
Können Sie das überprüfen?
Und wenn das Problem hier ist, sollten Sie error_reporting
und display_errors
aktivieren ;-) Das würde helfen!
EDIT nach einem Blick auf die PHP-Datei unter:
In Ihrer for-Schleife, die Sie dies tun, um Ihre Beschreibung Daten zu erhalten:
$item_desc = $x->item($i)->getElementsByTagName('description')->item(0)->childNodes->item(0)->nodeValue;
Beschreibung enthält keine childNode , Ich würde sagen ; Was ist mit der direkten Verwendung von nodeValue?
So:
$item_desc = $x->item($i)->getElementsByTagName('description')->item(0)->nodeValue;
Es scheint besser zu funktionieren auf diese Weise :-)
Als Nebenbei bemerkt, werden Sie wahrscheinlich für andere Tags das gleiche tun könnte, nehme ich an; das scheint zum Beispiel auch zu funktionieren:
$item_title=$x->item($i)->getElementsByTagName('title')->item(0)->nodeValue;
$item_link=$x->item($i)->getElementsByTagName('link')->item(0)->nodeValue;
Was gibt Ihnen das?
Another EDIT: und hier ist der Code, den ich wahrscheinlich verwenden würde:
$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 />';
}
Hinweis ich die XML-Daten in einem String haben, und ich brauche es nicht von einer URL zu holen, also verwende ich die loadXML
Methode und nicht load
.
Der Hauptunterschied ist, dass ich einige childNodes-Zugriffe entfernt habe, die ich für nicht notwendig hielt.
Scheint Ihnen das OK?
Können Sie auch den Teil des Codes veröffentlichen, der für das Parsen der XML-Daten verantwortlich ist? Vielleicht ist der Fehler im Code und nicht in den Daten ^^ –
Haben Sie noch den XML- und PHP-Code? Pastebin hat deine Einträge gelöscht. Wenn du sie hast, könntest du die Frage bearbeiten, um sie zurück zu bringen (setze sie nicht wieder in pastebin, sondern füge sie stattdessen in den Fragetext ein.) Wenn du es nicht kannst, wird die Frage gelöscht. Vielen Dank. –
unbekannte Paste ID! – GoodSp33d