Foros del Web » Programando para Internet » PHP »

Gernerar XML con php

Estas en el tema de Gernerar XML con php en el foro de PHP en Foros del Web. Holas Ya estoy yo como siempre metiéndome en camisas de 11 varas Estoy intentando generar un archivo RRS (RDF Site sumary) con php, tal y ...
  #1 (permalink)  
Antiguo 14/11/2002, 13:30
Avatar de t0m|ta  
Fecha de Ingreso: julio-2002
Ubicación: Madrid
Mensajes: 369
Antigüedad: 21 años, 8 meses
Puntos: 3
Pregunta Gernerar XML con php

Holas

Ya estoy yo como siempre metiéndome en camisas de 11 varas

Estoy intentando generar un archivo RRS (RDF Site sumary) con php, tal y como lo hacen sitepoint (http://www.sitepoint.com/rss.php). Pero tengo un problema tonto.

El rss al ser XML tiene que llevar como primera línea:

<?xml version="1.0" encoding="iso-8859-1" ?>

Al tratarse de un fichero con la extensión .php el servidor interpreta que <? es que empieza el código php y claro me da un "parse error".

he intentado que la primera línea del fichero sea:

Código PHP:
<?php echo('<?xml version="1.0" encoding="iso-8859-1" ?>');
pero me da un error en la línea 2

Si no pongo la declaración se me queda colgado.

Podría generarlo escribiendo en otro archivo y me libraría de este problema pero de esa forma tendría que montarme algo para que el php estuviese ejetutándose cada 10 minutos y eso me parece más dificil.

Si alguien me puede decir cómo consigo que php no interprete la declaración xml como código php quedaría muy agradecida. Me he ido a ver los "escape characters" del manual pero hay como 700 y no entiendo nada.

Algún alma caritativa?
__________________
:ojotes: t0m|ta - IHQ :ojotes:
No tengo palabras
Instrucciones de andar por casa
  #2 (permalink)  
Antiguo 14/11/2002, 14:48
Avatar de chubu  
Fecha de Ingreso: enero-2002
Ubicación: Buenos Aires
Mensajes: 133
Antigüedad: 22 años, 2 meses
Puntos: 0
que error te da en la linea 2? estas cerrando correctamente las llaves de php (<? y ?>) cuando haces el echo de la primera linea del xml?

por que mejor no pruebas armando todo el xml en un string y al final del script lo envias por un print o un echo? creo que eso será mejor, porque te permitirá tener más control sobre los saltos de linea (los vas agregando dentro del string, con "\n"), cosa que seuele romper los parsers de xml.

saludos,

chubu
__________________
:pensando:hay algo mal que no anda bien
  #3 (permalink)  
Antiguo 14/11/2002, 14:53
Avatar de t0m|ta  
Fecha de Ingreso: julio-2002
Ubicación: Madrid
Mensajes: 369
Antigüedad: 21 años, 8 meses
Puntos: 3
je, creo que me estoy perdiendo algo, yo me he puesto a intentar generar el código como si fuese un php normal que generara html,

Código PHP:
<?php echo('<?xml version="1.0" encoding="iso-8859-1" ?>');

include(
'/home/sites/www.lolailo/connect.inc');
include(
'/home/sites/www.lolailo//variables.php');

?>

 
- <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:sy="http://purl.org/rss/1.0/modules/syndication/" xmlns:admin="http://webns.net/mvcb/" xmlns="http://purl.org/rss/1.0/">
- <channel rdf:about="<?php echo $inicio?>">
  <title><?php echo $sitename?></title> 
  <link><?php echo $inicio?></link> 
  <description>::..:: tomatoma ::..:: Instrucciones de andar por casa... para los que no distinguimos una cafetera de un ordenador...</description> 
  <dc:language>en-us</dc:language> 
  <dc:creator /> 
  <dc:date> <?php echo date ("l dS of F Y h:i:s A");?></dc:date> 
  <admin:generatorAgent rdf:resource="http://www.oreillynet.com/pub/a/network/2000/08/25/magazine/rss_tut.html" />

<?php


$sql 
"SELECT topic_id,topic_title,topic_time,topic_views, username, forum_id FROM manual_topics, phpbb_users WHERE forum_id <> 3 AND forum_id <> 11 AND forum_id <> 1 AND forum_id <> 25 AND forum_id <> 24  AND forum_id <> 13  AND user_id = topic_poster  ORDER BY topic_time DESC LIMIT 0, 15";
    
$result = @mysql_query($sql);
     if (!
$result) {
        echo (
"Error en la query 1");
        exit();
    }

    while (
$row = @mysql_fetch_row($result))
     {  

 
$topic[$e]['topic_id'] = $row["0"];
 
$topic[$e]['topic_title']= $row["1"];
 
$topic[$e]['topic_time'] = date('d.m.y',$row["2"]);
 
$topic[$e]['topic_views'] = $row["3"];
 
$topic[$e]['username']= $row["4"];
  
$topic[$e]['forum_id']= $row["5"];


?>


  <item rdf:about="http://www.tomatoma.ws/articulo.php?topic_id=<?php echo $topic[$e]['topic_id'] . "&forum_id=" $topic[$e]['forum_id'];?>" />
           <title><?php echo  $topic[$e]['topic_title'];?></title>
           <link>[url]http://www.tomatoma.ws/articulo.php?topic_id=[/url]<?php echo $topic[$e]['topic_id'] . "&forum_id=" $topic[$e]['forum_id'];?></link>


<?php

    
}


?>
</item>
</rdf:RDF>
Eso del XML parser se me escapa :-/, puedes darme pistas para que estudie un poco más?

Gracias por responderme, estoy a punto de tirarme de los pelos :P
__________________
:ojotes: t0m|ta - IHQ :ojotes:
No tengo palabras
Instrucciones de andar por casa
  #4 (permalink)  
Antiguo 14/11/2002, 15:15
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
Mirate este tutorial de como crear un XML a partir de PHP. (en RSS)

RSS
http://www.devarticles.com/art/1/238

Ahí tienes descrito como generar RSS y de paso crean un objeto generico para trabajar con RSS ...

Un saludo,
  #5 (permalink)  
Antiguo 14/11/2002, 15:23
Avatar de chubu  
Fecha de Ingreso: enero-2002
Ubicación: Buenos Aires
Mensajes: 133
Antigüedad: 22 años, 2 meses
Puntos: 0
Sin palabras

No hay más que agregar, Cluster está en todo :).

saludos,

chubu
__________________
:pensando:hay algo mal que no anda bien
  #6 (permalink)  
Antiguo 14/11/2002, 15:46
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
jejeej Chubu ...

La verdad q solo uso principalmente estas fuentes de referencia:

phpbuilder.com
devshed.com
devarticles.com

Y por supuesto php.net y si hablamos de Mysql .. pues Mysql.com

Y .. la verdad q el 90% de casos .. en alguno de esos sitios hay alguna referencia a lo q se busca ...

Yo no soy mas q un "orientador" .... algunos me llamaban "link man" jajaja xD

Un saludo,
  #7 (permalink)  
Antiguo 14/11/2002, 16:07
Avatar de t0m|ta  
Fecha de Ingreso: julio-2002
Ubicación: Madrid
Mensajes: 369
Antigüedad: 21 años, 8 meses
Puntos: 3
Muchísimas gracias,

dios os lo pague cuando lo consiga os lo cuento, pero advierto que puedo tardar semanas, porque de OOP sé tanto como de fumbol aprox. ¿porqué me meto yo en estos lios? Jeje, a veces pienso que debería dedicarme a coser, como mi agüela
__________________
:ojotes: t0m|ta - IHQ :ojotes:
No tengo palabras
Instrucciones de andar por casa
  #8 (permalink)  
Antiguo 14/11/2002, 16:28
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
Pues trankila con OOP .. q solo vas a usar metodos e instanciar objetos ..

El dia q te pongas a programar esos objetos y metodos .. jeje será otro dia xD .... No es dificil .. pero como todo tiene sus nomas y técnicas ... no es llegar y cosa de poner a ver q sale ..

Un saludo,
  #9 (permalink)  
Antiguo 15/11/2002, 08:08
Avatar de t0m|ta  
Fecha de Ingreso: julio-2002
Ubicación: Madrid
Mensajes: 369
Antigüedad: 21 años, 8 meses
Puntos: 3
Holas, de momento estoy con código normal, es que si uso una clase que ya me dan hecha y que encima no entiendo, no aprendo y si falla (siempre falla ) no sé porqué y me tiro de los pelos.

Ya he conseguido generar el código, pero por alguna extraña razón, se empeña en que lo descargue :(

Estoy venga a mirar el código que he generado y no encuentro nada mal


http://www.tomatoma.ws/prueba3.php

Si le das a guardar, te guarda un archivo htm y si lo abres ves el código XML que se ha generado.

¿alguna pista?

__________________
:ojotes: t0m|ta - IHQ :ojotes:
No tengo palabras
Instrucciones de andar por casa
  #10 (permalink)  
Antiguo 15/11/2002, 09:08
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
Parece q por algun lado te están fallando el evio de la cabecera "<? XML ...." q le indicará al navegador q eso q "va" a enviarse es XML ...

Si estas usando la classe del link q te puse .. deberia ir. (yo todavia no la he probado xDD .. la tengo aquí como "tema pendiente de ver xD" pero no tengo time() ..)

Podrias pasarte por www.phpclasses.org y buscar otra classe que genere esos RSS q necesitas (hay una seccion dedicado a XML entero ..)

Un saludo,
  #11 (permalink)  
Antiguo 15/11/2002, 10:37
Avatar de t0m|ta  
Fecha de Ingreso: julio-2002
Ubicación: Madrid
Mensajes: 369
Antigüedad: 21 años, 8 meses
Puntos: 3
Ya pero es que las clases no las entiendo, tengo una web porque creo que tengo cosas interesantes que contar.

la hago yo porque no puedo pagar a nadie que me la haga.

Pero mis conceptos de programación están cogidos con pinzas, el conceptos de las clases en php simplemente se me escapa.

No entiendo nada, no sé como usarlas, no tienen la más mínima lógica para mi y me he leido uno 30 artículos y manuales sobre el tema. Nada, siguen siendo magia

Creo que de momento renunciaré a sindicar mis contenidos hasta que encuentre un script sin clases que funcione.

Muchísimas gracias por vuestra ayuda, si alguna vez lo consigo, prometo colgar el script en este foro.
__________________
:ojotes: t0m|ta - IHQ :ojotes:
No tengo palabras
Instrucciones de andar por casa
  #12 (permalink)  
Antiguo 15/11/2002, 15:36
Ex Colaborador
 
Fecha de Ingreso: junio-2002
Mensajes: 9.091
Antigüedad: 21 años, 10 meses
Puntos: 16
Hola,

Por lo que veo lo has conseguido. Me explico. Si cuando accedes a la pagina obtienes el codigo XML, y este codigo es un RSS valido, es que ya se puedes sindicar tu contenido.

Que tu navegador intente descargarlo no tiene nada que ver, es que esta configurado para hacer cosas raras. Quizas eso lo puedes solucionar con un header("Content-Type: loquesea");. Pero ten en cuenta que esa pagina va ha ser accedida directamente por otras paginas o programas que entienden XML y RSS. Mientras que lo que generes sea RSS valido, no hay problema.

Para comprobar que funciona, puedes implemantar el visor de RSS de un articulo de Sitepoint y probarlo con tu pagina.

Suerte.
__________________
Josemi

Aprendiz de mucho, maestro de poco.
  #13 (permalink)  
Antiguo 15/11/2002, 18:42
Avatar de t0m|ta  
Fecha de Ingreso: julio-2002
Ubicación: Madrid
Mensajes: 369
Antigüedad: 21 años, 8 meses
Puntos: 3
gracias, por consolarme , no sé porqué intenta descargarlo, lo he hecho siguiendo un modelo al pie de la letra y ese modelo no lo descarga, en cambio el mio si, snif

De todas maneras intentaré estudiarme las clases, pero tengo que esperar un poco, por el momento les he cogido auténtica manía. Cuando me pasa eso, aparco el tema un par de meses y luego lo retomo :P

Miraré lo del content type

Y gracias a todos, de verdad
__________________
:ojotes: t0m|ta - IHQ :ojotes:
No tengo palabras
Instrucciones de andar por casa
  #14 (permalink)  
Antiguo 15/11/2002, 21:35
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
Si es por tema de navegadores..

Yo pinche el link q distes con el RSS .. y con IE5.5 me lo intentó descargar .. osese . .o no envias bien las cabeceras XML . .o IE5.5 no se entera

El caso q no todos los navegadores incluyen validador XML y visor .. igual por ahí anda el tema ..

El caso tambien es q tu cuando generas unos datos XML (en tu caso RSS) .. para leerlos en una página HTML hay q "parsearlos" .. yo no se mucho si ese RSS generado va ya "parseado" para HTML como los XSGML o algo así (disculpen la ignorancia xD) .. o como va .. pero si q es cierto q PHP tiene funciones para "parsear" XML ... y to el roollo de CSS, DTD y demas hierbas del mundo XML ...

Pasate por el foro XML a ver si ahi te orientan más sobre el tema .. y cuando lo saques . jeejej avisa xD.

Un saludo,
  #15 (permalink)  
Antiguo 16/11/2002, 15:51
Avatar de t0m|ta  
Fecha de Ingreso: julio-2002
Ubicación: Madrid
Mensajes: 369
Antigüedad: 21 años, 8 meses
Puntos: 3
Le he pasado el validador de rss http://feeds.archive.org/validator/ y he conseguido solucionar todos los errores menos uno, la página tiene un error que creoque se debe a las URLS dinámicas, aunque no estoy segura, tengo que buscar documentación. Es que las explicaciones de los errores son una locura :/ yo no entiendo nada, así que tendré que mirar en otros sitios.

Respecto a "parsearlos", si el documento de origen está mal, surgirán problemas al parsearlos. Especialmente si alquien quiere sindicar tus contenidos, casi todo el mundo lo hace con herramientas estandard por lo que el código debería poder funcionar con herramientas estandard.

Además, hay unos programillas gratuitos, lectores de este tipo de "canales" de noticias, que resultan estupendos, porque no ocupan nada (menos de un mega) y te puedes suscribir a varias "páginas", cada vez que la página se actualiza, ves el nuevo titular, un enlace y una pequeña descripción. Y si el artículo, noticia o lo que sea te interesa, entonces vas a la página. Es cómodísimo así que pretendo que mi página funcione con eso (además de en los navegadores).

En fin seguiré investigando, pero con calma, porque no tengo mucho tiempo para mi desgracia, cuando esté terminado y todo funcione publicaré aquí mismo el código por si a alguien le interesa.
__________________
:ojotes: t0m|ta - IHQ :ojotes:
No tengo palabras
Instrucciones de andar por casa
  #16 (permalink)  
Antiguo 19/11/2002, 00:47
Avatar de t0m|ta  
Fecha de Ingreso: julio-2002
Ubicación: Madrid
Mensajes: 369
Antigüedad: 21 años, 8 meses
Puntos: 3
Ya funciona

http://www.tomatoma.ws/prueba3.php

Ahora sólo me queda solucionar un pequeño problemilla, que he utilizado dos veces la misma SELECT para no tener que comerme el tarro también con arrays multidimensionales, en cuanto solucione eso publico el código
__________________
:ojotes: t0m|ta - IHQ :ojotes:
No tengo palabras
Instrucciones de andar por casa
  #17 (permalink)  
Antiguo 13/01/2003, 10:56
Avatar de t0m|ta  
Fecha de Ingreso: julio-2002
Ubicación: Madrid
Mensajes: 369
Antigüedad: 21 años, 8 meses
Puntos: 3
Por cierto, le había perdido la pista a este mensaje, que es
incómodísimo de leer (culpa mía, por postear el código :-/)

Finalmente lo conseguí, así que si alguien está interesado
intentaré contárselo (yo esto de la programción lo tengo
cogido un poco con pinzas, y a veces ni siquiera sé porqué
me funcionan las cosas.

El archivo final lo podéis ver en: http://www.tomatoma.ws/rss.php

Y lo dicho, si alguien tiene interés en saber como está hecho,
que responda a este mensaje, o bien que me mande un privadín
d'esos.

Ya puestos, estoy creando un directorio de contenidos sindicados,
Una especie de yahoo, pero de titulares sindicados. Empecé a
montarme la base de datos y tal pero al final comprendí que
estaba reinventando la rueda y me limité a hacerle una pequeña
modificación al phplinks. Todavía no está publico porque me
quedan algunos problemillas que solucionar Pero si alguien
sindica contenidos o conoce algún sitio que sindique contenidos
y que esté bien, le agradecería que me lo indicase.

Podéis ver los que ya hay en http://www.tomatoma.ws/phplinks
que es donde tengo puesta la prueba.

Un saludo

[editando] ahora la prueba está en http://www.tomatoma.ws/vistazo [/editando]
__________________
:ojotes: t0m|ta - IHQ :ojotes:
No tengo palabras
Instrucciones de andar por casa

Última edición por t0m|ta; 26/01/2003 a las 16:34
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 12:24.