Foros del Web » Programación para mayores de 30 ;) » Programación General »

error al leer xml con simplexml()

Estas en el tema de error al leer xml con simplexml() en el foro de Programación General en Foros del Web. Hola a todos, tengo el siguiente problema: (no se si deba ir en el foro de PHP o el de XML) Estoy desarrollando un script ...
  #1 (permalink)  
Antiguo 19/07/2009, 03:11
 
Fecha de Ingreso: junio-2006
Ubicación: Antofagasta
Mensajes: 216
Antigüedad: 17 años, 10 meses
Puntos: 7
error al leer xml con simplexml()

Hola a todos, tengo el siguiente problema:

(no se si deba ir en el foro de PHP o el de XML)

Estoy desarrollando un script en php para leer un XML generado por una aplicacion web, especificamente el xml que genera el servidor shoutcast con los datos de oyentes en linea, temas emitidos, etc.

Para acceder a ese xml se hace por medio de la url: http://LA-IP:PUERTO/admin.cgi?mode=viewxml lo cual salta un cuadro solicitando usuario y contraseña, una ves ingresado esos datos se puede visualizar el contenido del archivo XML.
Para evitar el cuadro de login se agrega en la url la variable "pass=*****" y de esa manera entra directamente.

Bueno, ahora les cuento lo que estoy tratando de hacer.
Estoy haciendo un archivo php que ingrese a la url antes descrita, lea el contenido y lo muestre en una tabla ordenado segun mis necesidades, lamentablemente no me funciona (Estoy usando SIMPLEXML).

Si visualizo directamente el xml en el explorador, lo guardo en mi disco y despues lo leo desde mi script php con simpleXml no tengo problemas, pero cuando intento acceder directamente a el me manda los siguientes mensajes:

Código PHP:
Warningfile_get_contents(http://111.111.111.111:8000/admin.cgi?pass=*****&mode=viewxml) [function.file-get-contents]: failed to open stream: HTTP request failed! ICY 404 Resource Not Found in C:\AppServ\www\test\leer_xml.php on line 13

WarningInvalid argument supplied for foreach() in C:AppServwwwtestleer_xml.php on line 16 
Este es parte del codigo que utilizo para leer el XML:
Código PHP:
$file="http://111.111.111.111:8000/admin.cgi?pass=*****&mode=viewxml";

$data =  file_get_contents($file); 
$xml simplexml_load_string($data);
... 
Pense que el problema era la pagina pero mediante el siguiente script si pude acceder a ella.
Lo que hace este script es leerla y mostrarla tal cual... osea muestra la misma estructura del XML de la pagina original
Código PHP:
$scip "111.111.111.111";
$scport 8000;
$scpass "*****";
$scfp = @fsockopen($scip$scport, &$errno, &$errstr10);
if(!
$scfp) {
echo 
$errstr;
}else{
fputs($scfp,"GET /admin.cgi?pass=$scpass&mode=viewxml HTTP/1.0\r\nUser-Agent: SHOUTcast Stats (Mozilla Compatible)\r\n\r\n");
while(!
feof($scfp)) {
$page .= fgets($scfp1000);
}
$xmlData substr($page,42);
}
header('Content-Type: text/xml');
echo 
$xmlData
si accedo por el navegador a este archivo php me muestra el mismo contenido XML que si accedo a http://ip:puerto/admin.cgi?mode=viewxml.

Ahora intenté cargar este PHP en el primer script y me manda estos mensajes:

Código PHP:
Warningsimplexml_load_string() [function.simplexml-load-string]: Entityline 17parser error Start tag expected'<' not found in C:AppServwwwtestleer_xml.php on line 14

Warning
simplexml_load_string() [function.simplexml-load-string]: ?> in C:\AppServ\www\test\leer_xml.php on line 14

Warning: simplexml_load_string() [function.simplexml-load-string]: ^ in C:\AppServ\www\test\leer_xml.php on line 14 
En la linea 14 tengo $xml = simplexml_load_string($data);

La verdad no se o no entiendo que pueda estar pasando, ojalá aguno de ustedes logre darme una mano para dar con el problema.

Ojalá se entienda mi post, cualquier duda estaré aqui para dar mas detalles.

Saludos
  #2 (permalink)  
Antiguo 19/07/2009, 04:50
 
Fecha de Ingreso: junio-2006
Ubicación: Antofagasta
Mensajes: 216
Antigüedad: 17 años, 10 meses
Puntos: 7
Respuesta: error al leer xml con simplexml()

bueno, ya lo he solucionado...
despues de haber estado mas de 10 horas buscando, probando, etc al fin pude solucionarlo y era bastante simple la solucion :S

Al final el codigo queda asi:
Código PHP:
<?php
$scip 
"111.111.111.111";
$scport 8000;
$scpass "*****";
$scfp = @fsockopen($scip$scport, &$errno, &$errstr10);
if(!
$scfp) {
echo 
$errstr;
}else{
fputs($scfp,"GET /admin.cgi?pass=$scpass&mode=viewxml HTTP/1.0\r\nUser-Agent: SHOUTcast Stats (Mozilla Compatible)\r\n\r\n");
while(!
feof($scfp)) {
$page .= fgets($scfp1000);
}
$xmlData substr($page,42);
}

$xml simplexml_load_string($xmlData);
...
//... el resto del codigo
?>
era bastante simple la solucion y estube batallando varias horas sin darme cuenta que no era tan complicado como pense :)

Saludos
  #3 (permalink)  
Antiguo 23/07/2009, 17:59
Avatar de okvic77  
Fecha de Ingreso: abril-2009
Mensajes: 74
Antigüedad: 15 años
Puntos: 0
Respuesta: error al leer xml con simplexml()

Como te conectaste amigo, yo no puedo, pliss, help me, es de SHOUTCast no, pues ayudame, pliss
Salu2
  #4 (permalink)  
Antiguo 14/01/2010, 16:56
 
Fecha de Ingreso: enero-2010
Mensajes: 1
Antigüedad: 14 años, 3 meses
Puntos: 0
Respuesta: error al leer xml con simplexml()

q onda greco2 ahhmira ahorita yo tambien tengo el mismo problema q tenias

no puedo leer el xml del servidor por el cual transmito

http://s2.myradiostream.com:00000/admin.cgi?pass=******&mode=viewxml


OJALA ME PUEDAS AYUDAR YA QUE DE VDD YA ME VOLVI LOKO
PORQ NO ME KEDA

YA VI COMO LO SOLUCIONASTE TU Y LO APLIKE IGUAL Q TU, PERO EL PROBLEMA Q TENGO CON ESA SOLUCION ES Q EN EL SERVIDOR EN EL CUAL TENGO HOSPEDADO MI PAGINA
NO SOPORTA LA FUNCION fsockopen();

Y PS NO ENCUENTRO LA FORMA DE PODER HACERLO IGUAL Q TU SOLUCION

ESPERO ME PUEDAS AYUDAR YA QUE EL ERROR Q ME AVIENTA EN EL EXPLORARDOR

ES Q NO PUEDE ABRIR EL STREAM "HTTP" Y Q NO PUEDE CARGAR EL ARCHIVO XML EXTERNO

MIRA TE POSTEO MI CODIGO PARA Q VEAS COMO ES Q LO TENGO Y CMO LO PODRIA SOLUCIONAR GRACIAS...



Código PHP:
Ver original
  1. <?php
  2. $terms = urlencode('**********');   //AKI ES DONDE INTRODUZCO EL PASSWORD
  3. $url = 'http://s2.myradiostream.com:00000/';
  4. $query ='admin.cgi?pass='.$terms.'&mode=viewxml';
  5.  
  6. $serviceurl = $url.$query;  // AKI SE ARMA LA URL COMPLETA "HTTP://s2.myradi.../admin.cgi...."
  7.  
  8. $xmlData = simplexml_load_file($serviceurl);
  9.  
  10. foreach ($xmlData->SHOUTCASTSERVER->SONGHISTORY as $item)
  11.  
  12.   echo "<h1>HISTORIAL</h1> <br />\n";
  13.     echo "$item->SONG<br />\n";
  14.     echo "<hr /> \n";
  15.  
  16. ?>


ESPERO TU PRONTA RESPUESTA GRACIAS..!!
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta

SíEste tema le ha gustado a 1 personas




La zona horaria es GMT -6. Ahora son las 17:41.