Sólo por curiosidad, después de conseguir su XML (espero didnt't destruirlo en el proceso - Voy a ver si puedo editar el OP para corregirlo):
- ¿Echaste la descripción a una cadena?
Lo que quiero decir es que usted podría utilizar esto:
$xml = simplexml_load_string($str);
foreach ($xml->channel->item as $item) {
var_dump($item->description);
}
Pero sólo le conseguiría que:
object(SimpleXMLElement)[5]
object(SimpleXMLElement)[3]
que no es tan agradable ...
Necesita convertir los datos a una cadena, como esta:
$xml = simplexml_load_string($str);
foreach ($xml->channel->item as $item) {
var_dump((string)$item->description);
}
Y se obtiene las descripciones:
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)
(Usando trim
en los que podría resultar útil, por cierto, si usted tiene sangría XML)
lo demás ... Bueno , probablemente necesitemos su código php (al menos, sería útil saber cómo está llegando a la etiqueta description
;-))
EDITAR
Gracias por el XML reformated!
Si voy a pastebin, en el área de texto en la parte inferior de la página, hay un espacio en blanco al principio del XML, antes de la <?xml version="1.0" encoding="utf-8"?>
Si tiene que uno de los datos XML reales, será una fuente de problema: no es XMl válido (la declaración XML tiene que ser la primera cosa en los datos XML).
Usted obtendrá errores como éste:
Warning: simplexml_load_string() [function.simplexml-load-string]: Entity: line 1: parser error : XML declaration allowed only at the start of the document
Se puede comprobar que?
Y, si el problema está aquí, debe activar error_reporting
y display_errors
;-) ¡Eso ayudaría!
Edición después de echar un vistazo al archivo PHP:
En su bucle, que están haciendo esto para obtener su descripción de datos:
$item_desc = $x->item($i)->getElementsByTagName('description')->item(0)->childNodes->item(0)->nodeValue;
descripción no contiene ninguna childNode , Yo diría que ; ¿qué hay de usar su nodeValue directamente?
De esta manera:
$item_desc = $x->item($i)->getElementsByTagName('description')->item(0)->nodeValue;
Parece estar funcionando mejor de esta manera :-)
Como anotación al margen, que probablemente se podría hacer lo mismo para otras etiquetas, supongo; por ejemplo, esto parece estar funcionando también:
$item_title=$x->item($i)->getElementsByTagName('title')->item(0)->nodeValue;
$item_link=$x->item($i)->getElementsByTagName('link')->item(0)->nodeValue;
¿Qué le ofrece esto?
Otra EDIT: y aquí está el código, probablemente, me gustaría utilizar:
$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 />';
}
Nota tengo los datos XML en una cadena, y no necesito a buscarla a una dirección URL, entonces estoy usando el método loadXML
y no el load
.
La principal diferencia es que eliminé algunos accesos de childNodes, que creo que no eran necesarios.
¿Te parece bien?
¿También puede publicar la parte del código que está a cargo del análisis de los datos XML? Tal vez el error está en el código, y no en los datos ^^ –
¿Todavía tiene el código XML y PHP? Pastebin ha eliminado tus entradas. Si los tiene, podría editar la pregunta para devolverlos (no los vuelva a poner en pastebin, póngalos en el texto de la pregunta). Si no puede, la pregunta se eliminará. Gracias. –
unknown paste id! – GoodSp33d