Foros del Web » Programando para Internet » PHP »

Parsear RSS y acceder a determinados datos

Estas en el tema de Parsear RSS y acceder a determinados datos en el foro de PHP en Foros del Web. Hola todos Seguro que se ha tratado en otro tema en el foro pero he buscado de arriba a abajo y no he encontrado nada. ...
  #1 (permalink)  
Antiguo 14/10/2011, 05:00
 
Fecha de Ingreso: junio-2003
Mensajes: 778
Antigüedad: 20 años, 10 meses
Puntos: 1
Parsear RSS y acceder a determinados datos

Hola todos

Seguro que se ha tratado en otro tema en el foro pero he buscado de arriba a abajo y no he encontrado nada.

Esoy tratando de parsear unos datos de un fichero RSS, como este

Código:
<?xml version="1.0" encoding="UTF-8"?>
<rss version ="2.0" xmlns:g="http://base.google.com/ns/1.0">
<channel>
	<title>Titulo del Feed</title>
	<description>Descripción del Feed</description>
	<link>http://www.midominio.com</link>	
    <item>
    	<title>Titulo coche</title>
        <link>url del coche</link>
        <description>Descripción del item</description>    	
    	<g:marca></g:marca>
    	<g:estado>new</g:estado>    	
    	<g:id>81</g:id>
       <g:mpn>2013</g:mpn>
    	<g:image_link>url de la imagen</g:image_link>    	
      <g:price>14000</g:price>      
    </item>
</channel>
</rss>
He probado con parseRSS y CURL y funciona bien con <title>, <descriptcion> etc pero no se como acceder a los datos <g:price> <g:mpn>...



Código:
$ch = curl_init("http://www.midominio.com/rss");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HEADER, 0);
$data = curl_exec($ch);
curl_close($ch);


$xmlFileData = new SimpleXmlElement($data, LIBXML_NOCDATA);
function parseRSS($xml)
{
	
	echo '<?xml version="1.0" encoding="UTF-8"?>'."\n";
	echo'<rss version ="2.0" xmlns:g="http://base.google.com/ns/1.0">'."\n";
	echo'<channel>'."\n";
	echo "<title>titulos</title> \n";
	echo "<description>descripcion</description>\n";
	
	
	$cnt = count($xml->channel->item);
    for($i=0; $i<$cnt; $i++){
		
		echo "<item>\n";				
		        echo "<title>".utf8_decode($xml->channel->item[$i]->title)."</title> \n";
		        echo "<description>".utf8_decode($xml->channel->item[$i]->description)."</description>\n";		        		
		        echo "</item>\n";
	}
	echo "</channel> \n </rss>\n";    
}
parseRSS($xmlFileData);



Podéis echarme una mano??

Gracias anticipadas

Última edición por Operadormail; 14/10/2011 a las 05:05
  #2 (permalink)  
Antiguo 14/10/2011, 07:25
Avatar de maycolalvarez
Colaborador
 
Fecha de Ingreso: julio-2008
Ubicación: Caracas
Mensajes: 12.120
Antigüedad: 15 años, 9 meses
Puntos: 1532
Respuesta: Parsear RSS y acceder a determinados datos

¿porque no usas SimpleXML?, al final los RSS son simples XML
__________________
¡Por favor!: usa el highlight para mostrar código
El que busca, encuentra...
  #3 (permalink)  
Antiguo 14/10/2011, 08:12
 
Fecha de Ingreso: junio-2003
Mensajes: 778
Antigüedad: 20 años, 10 meses
Puntos: 1
Respuesta: Parsear RSS y acceder a determinados datos

Con SimpleXML he tenido problemas al recuperar algunos xml remotos, supongo que por permisos del servidor...
¿Podrías decirme como sería con SimpleXML?
  #4 (permalink)  
Antiguo 14/10/2011, 09:42
Avatar de andresdzphp
Colaborador
 
Fecha de Ingreso: julio-2011
Ubicación: $this->Colombia;
Mensajes: 2.749
Antigüedad: 12 años, 9 meses
Puntos: 793
Respuesta: Parsear RSS y acceder a determinados datos

Hola Operadormail, estos g:price se llaman namescape y tienes que usar los métodos para acceder a ellos... Te recomiendo este aporte para que entiendas mejor:

[APORTE] Leer XML con SimpleXML y DOM

Saludos.
__________________
Si sabemos como leer e interpretar el manual será mucho más fácil aprender PHP. En lugar de confiar en ejemplos o copiar y pegar - PHP
  #5 (permalink)  
Antiguo 14/10/2011, 09:50
Avatar de maycolalvarez
Colaborador
 
Fecha de Ingreso: julio-2008
Ubicación: Caracas
Mensajes: 12.120
Antigüedad: 15 años, 9 meses
Puntos: 1532
Respuesta: Parsear RSS y acceder a determinados datos

@Operadormail: a lo sumo con allow_url_fopen activo se puede, si no, intenta recuperar primero desde cURL y se lo pasas al simple XML

@andresdzphp: ¿no es namespace?
__________________
¡Por favor!: usa el highlight para mostrar código
El que busca, encuentra...
  #6 (permalink)  
Antiguo 14/10/2011, 09:53
Avatar de andresdzphp
Colaborador
 
Fecha de Ingreso: julio-2011
Ubicación: $this->Colombia;
Mensajes: 2.749
Antigüedad: 12 años, 9 meses
Puntos: 793
Respuesta: Parsear RSS y acceder a determinados datos

Cita:
Iniciado por maycolalvarez Ver Mensaje
@Operadormail: a lo sumo con allow_url_fopen activo se puede, si no, intenta recuperar primero desde cURL y se lo pasas al simple XML

@andresdzphp: ¿no es namespace?
Si eso mismo la universidad me dejó hoy en otro mundo mil disculpas.

Dejo un mini ejemplo para que sirva de guía sobre namespace:

Código PHP:
Ver original
  1. <?php
  2. $sxe = new SimpleXMLElement($data);
  3. $ns = $sxe->getNamespaces(true);
  4. $data = $sxe->channel->item->children($ns['g']);
  5. foreach ($data as $c => $v) {
  6.     echo "$c => $v <br />";
  7. }

Saludos.
__________________
Si sabemos como leer e interpretar el manual será mucho más fácil aprender PHP. En lugar de confiar en ejemplos o copiar y pegar - PHP

Última edición por andresdzphp; 14/10/2011 a las 13:22 Razón: Un ejemplo
  #7 (permalink)  
Antiguo 17/10/2011, 01:43
 
Fecha de Ingreso: junio-2003
Mensajes: 778
Antigüedad: 20 años, 10 meses
Puntos: 1
Respuesta: Parsear RSS y acceder a determinados datos

Muchas gracias maycolalvarez y andresdzphp¡¡ Me habéis quitado un dolor de cabeza que ya duraba unas horas¡¡

Muchas gracias¡¡

Etiquetas: parsear, rss
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




La zona horaria es GMT -6. Ahora son las 19:42.