Perl en Español

  1. Home
  2. Tutoriales
  3. Foro
  4. Artículos
  5. Donativos
  6. Publicidad
 

Recomendación de módulo XML

 
Publicar nuevo tema   Responder al tema    Foros de discusión -> Intermedio
Mensaje Mar May 27, 2008 6:18 am
zozo666
Perlero Frecuente
Perlero Frecuente
Registrado: 26 May 2007
Mensajes: 137
Recomendación de módulo XML Responder citando

Buenos días, perleros, necesitaría que me recomendaran algún módulo de Perl para manejar Archivos XML en forma fácil y rápida.

Lo único que tendría que hacer es un script que lea los datos de una base de datos y me los transforme en formato XML.

¿Me recomiendan algún módulo en especial?

Gracias
Mensaje Mar May 27, 2008 7:06 am
explorer
Moderador
Moderador
Registrado: 24 Jul 2005
Mensajes: 4060
Ubicación: Valladolid, España
Responder citando

Por aquí usamos XML::Simple y XML::Twig. Hay varios hilos en este foro con ejemplos.
Mensaje Mar May 27, 2008 12:17 pm
zozo666
Perlero Frecuente
Perlero Frecuente
Registrado: 26 May 2007
Mensajes: 137
Responder citando

Hola. Más específicamente, lo que voy a modificar es esto:

XML:

<?xml version="1.0"?>
<?xml-stylesheet href="/eqcenter/catalogs/rssxsl.php?feed=eqs1day-M1.xml" type="text/xsl" media="screen"?>
<rss version="2.0" xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <item><id>Tue, 27 May 2008 12:17:28 GMT</id><title>M 1.5, Southern California</title><description>May 27, 2008 12:17:28 GMT</description><hora>25/05/08 14:30:00</hora><geo:lat>33.3073</geo:lat><geo:long>-116.8570</geo:long><dc:subject>1</dc:subject><dc:subject>pasthour</dc:subject><dc:subject>13.40 km</dc:subject><guid isPermaLink="false">ci10327001</guid></item>

    <item><id>Tue, 27 May 2008 12:10:06 GMT</id><title>M 2.2, Southern California</title><description>May 27, 2008 12:10:06 GMT</description><hora>25/05/08 14:30:00</hora><geo:lat>33.1795</geo:lat><geo:long>-115.6383</geo:long><dc:subject>2</dc:subject><dc:subject>pasthour</dc:subject><dc:subject>3.60 km</dc:subject><guid isPermaLink="false">ci10326993</guid></item>
       
    <item><id>Tue, 27 May 2008 11:57:41 GMT</id><title>M 1.7, Southern California</title><description>May 27, 2008 11:57:41 GMT</description><hora>25/05/08 14:30:00</hora><geo:lat>33.1343</geo:lat><geo:long>-115.6123</geo:long><dc:subject>1</dc:subject><dc:subject>pastday</dc:subject><dc:subject>3.00 km</dc:subject><guid isPermaLink="false">ci10326981</guid></item>

  </channel>
</rss>


¿Cualquiera de los 2 módulos nombrados anteriormente me sirve para este tipo de xml?

Esta pregunta está formulada en base a que es el XML es un RSS y por lo tanto no sé si los módulos se compartan igual a la hora de manejarlos.

Muchas gracias.
Mensaje Mar May 27, 2008 1:35 pm
explorer
Moderador
Moderador
Registrado: 24 Jul 2005
Mensajes: 4060
Ubicación: Valladolid, España
Responder citando

En CPAN me salen 136 módulos para tratar los RSS. Pero como siguen siendo XML, puedes usar cualquiera de los 1604 módulos sobre XML que hay, o usar alguno de los dos comentados.

Todo depende de lo que quieres hacer con ese fichero. Que no lo has dicho.
Mensaje Mar May 27, 2008 6:46 pm
zozo666
Perlero Frecuente
Perlero Frecuente
Registrado: 26 May 2007
Mensajes: 137
Responder citando

Ok , yo pregunto por que quiero buscar la manera más fácil de tratar al xml que mostré anteriormente.
Lo único que tendría que hacer es que mediante la consulta que hago a la base de datos, me arme el XML que aparece ahí, o sea, cada vez que realizo la consulta, me cree todo el XML, obviamente, solo lo que está entre las etiquetas channel.

Acá dejo una forma de lo que tendría que hacer:

Mediante esta consulta:

SQL:
SELECT id,titulo,descripcion,hora,lat,lon FROM mapa WHERE Fecha > NOW()


Creo el xml de esta manera (pongo de la manera que utiliza el HTML::Template para listar los datos de una consulta, así se entiende mejor lo que necesito):

XML:
<?xml version="1.0"?>
<?xml-stylesheet href="/eqcenter/catalogs/rssxsl.php?feed=eqs1day-M1.xml" type="text/xsl" media="screen"?>
<rss version="2.0" xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
<TMPL_LOOP consulta>
    <item><id><TMPL_VAR id></id><title><TMPL_VAR titulo></title><description><TMPL_VAR descripcion></description><hora><TMPL_VAR Hora></hora><geo:lat><TMPL_VAR lat></geo:lat><geo:long><TMPL_VAR lon></geo:long><dc:subject>1</dc:subject><dc:subject>pasthour</dc:subject><dc:subject>13.40 km</dc:subject><guid isPermaLink="false">ci10327001</guid></item>
</TMPL_LOOP>
</channel>
</rss>


Esto es solo un ejemplo de lo que tendría que hacer, y lo armé de esa manera para que se entienda lo que necesito que haga la función de Perl que me arme el XML: Ojalá se halla entendido y así saber qué módulo me conviene utilizar.

Muchas gracias.
Mensaje Mar May 27, 2008 9:20 pm
explorer
Moderador
Moderador
Registrado: 24 Jul 2005
Mensajes: 4060
Ubicación: Valladolid, España
Responder citando

Hay módulos específicos para armar RSS, como el XML::RSS, aunque a veces el resultado no es el que se espera.

Si tienes muy clara la estructura interna que quieres, con el HTML::Template que has mostrado, te vale.
Mensaje Mar May 27, 2008 10:29 pm
zozo666
Perlero Frecuente
Perlero Frecuente
Registrado: 26 May 2007
Mensajes: 137
Responder citando

El problema es que quiero leer el archivo XML y luego guardarlo con las modificaciones que le genere, se entiende.

En el caso de que yo lo haga con HTML::Template no me va a servir, ya que necesitaría la forma de leer el archivo, pasarle los parámetros y luego guardarlo con las modificaciones establecidas.

Esto creo que no se puede hacer con el HTML::Template, por eso pregunté un módulo que genere un XML no tan complicado, como es el que mostré yo anteriormente, la estructura va ser así definitivamente.

La idea mía pasa más por armar el XML sin importar tanto el RSS, quiero saber si los mismos módulos me sirven para armar un XML de estas características.

Por lo que tengo entendido un RSS es muy parecido al XML, por lo tanto ¿Podría usar esos módulos?

Gracias
Mensaje Mie May 28, 2008 1:25 am
explorer
Moderador
Moderador
Registrado: 24 Jul 2005
Mensajes: 4060
Ubicación: Valladolid, España
Responder citando

Un fichero RSS es un fichero que forma parte de la familia de XML <http://es.wikipedia.org/wiki/RSS>.

Se podría usar XML::Simple para leer el fichero, modificarle y luego grabarle, pero hay que tener mucho cuidado, porque XML::Simple no suele mantener el orden de las entradas contenidas en el nodo raíz. Como los RSS suelen tener algún identificador, contador o fecha, no es importante ese orden.

En CPAN hay módulos para leer RSS, como XML::RSS::Parser, por ejemplo.
Mensaje Vie May 30, 2008 7:56 am
zozo666
Perlero Frecuente
Perlero Frecuente
Registrado: 26 May 2007
Mensajes: 137
Responder citando

Hola, estoy usando XML::Simple pero tengo un problema. Leo el archivo perfectamente, pero no sé cómo hacer para modificarlo y guardarlo, y en la documentación no encuentro la forma para hacer esto.

¿Será que el módulo solo lee los XML?

Gracias
Mensaje Vie May 30, 2008 12:48 pm
explorer
Moderador
Moderador
Registrado: 24 Jul 2005
Mensajes: 4060
Ubicación: Valladolid, España
Responder citando

Pues no, también se puede modificar.

En este foro hay algunos ejemplos. Usa el sistema de búsqueda. Busca por XML::Simple, activando la opción de buscar por todas las palabras.
Mensaje Mie Jun 04, 2008 6:22 am
zozo666
Perlero Frecuente
Perlero Frecuente
Registrado: 26 May 2007
Mensajes: 137
Responder citando

Muchas gracias, ya pude solucionar mi problema, ahora tengo otro problemita, que creo que me pueden ayudar.

Los XML los levanto con JavaScript. El problema se me presenta cuando yo actualizo el XML, cuando hago correr el JavaScript que me levanta el XML me levanta el XML sin actualizar, ¿se entiende?.

Yo modifico el XML pero cuando lo necesito usar, sigue quedando el viejo; ya probé que modifiqué bien y que tenga los permisos necesarios.

¿Conocen alguna forma para que se actualice el servidor cada vez que actualizo el XML? Así una vez que lo quiero levantar con el JavaScript, me levante siempre el último actualizado.

Muchas gracias y espero que me ayuden en esto, porque no encuentro la manera de que funcione bien.
Mensaje Mie Jun 04, 2008 5:32 pm
explorer
Moderador
Moderador
Registrado: 24 Jul 2005
Mensajes: 4060
Ubicación: Valladolid, España
Responder citando

Aparte de referirte siempre al fichero XML como un URL, solo se me ocurre que el problema sea posible porque el contenido del XML esté siendo cacheado por el cliente de HTML.

No sé... sin más pistas, poco puedo ayudarte. A ver si alguien tiene más ideas.
Publicar nuevo tema   Responder al tema    Foros de discusión -> Intermedio Todas las horas son GMT - 6 Horas
Página 1 de 1



Powered by phpBB © 2001, 2005 phpBB Group