• Publicidad

Generar XML

¿Apenas comienzas con Perl? En este foro podrás encontrar y hacer preguntas básicas de Perl con respuestas aptas a tu nivel.

Generar XML

Notapor calcifer1990 » 2012-02-24 09:48 @450

Hola,

Mi pregunta es: ¿cómo puedo generar un archivo .XML desde Perl, partiendo de un formato ya dado y unas consultas a mi base de datos?

De antemano, muchas gracias.
calcifer1990
Perlero nuevo
Perlero nuevo
 
Mensajes: 26
Registrado: 2011-10-03 10:15 @468

Publicidad

Re: Generar XML

Notapor explorer » 2012-02-24 10:17 @470

Pues... tienes un problema gordísimo, ya que Perl cuenta con una de las colecciones más amplias para tratar XML (varios centenares de módulos) y si a eso le sumamos el soporte para base de datos, pues... una colección tremenda.

Por ejemplo, existe XML::EasySQL permite transformar datos entre XML y SQL.

Haría falta un poco más de información para ajustar mejor la búsqueda.

Pero si el problema es sencillo, quizás te valga unas pocas líneas de código.
JF^D Perl programming & Raku programming. Grupo en Telegram: https://t.me/Perl_ES
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14480
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España

Re: Generar XML

Notapor calcifer1990 » 2012-02-24 11:48 @533

Lo que busco es algo como esto:

crear-archivo-xml-con-xml-simple-t3958.html

El problema es que al ejecutarlo me genera un archivo .pl.

Por ejemplo: "miScript.xml.pl"

¿Cómo puedo hacer para guardarlo en mi PC al ejecutar el script?

Gracias.
calcifer1990
Perlero nuevo
Perlero nuevo
 
Mensajes: 26
Registrado: 2011-10-03 10:15 @468

Re: Generar XML

Notapor explorer » 2012-02-24 12:07 @546

No entiendo lo que te pasa. En ese enlace hay un trozo de una subrutina y un programa. El programa entrega el resultado a la salida estándar, no a un archivo.

Sería mejor que pusieras aquí que es lo que estás haciendo.
JF^D Perl programming & Raku programming. Grupo en Telegram: https://t.me/Perl_ES
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14480
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España

Re: Generar XML

Notapor calcifer1990 » 2012-02-24 12:30 @562

Ok, te explico.

El script recibe unos parámetros:

TipoFactura, numeroFactura, Codigocliente etc.

Sintáxis: [ Descargar ] [ Ocultar ]
Using xml Syntax Highlighting
  1. <?xml version="1.0" encoding="ISO-8859-1" ?>
  2.    <FiscalDoc>
  3.    <PrintStationId>1,2,3</PrintStationId>
  4.    <PrinterId>1</PrinterId>
  5.    <DocType>NC</DocType>
  6.    <DocNumber>100</DocNumber>
  7.    <InvoiceNumber>40555</InvoiceNumber>
  8.    <CustomerName>Nombre del Cliente, S.A.</CustomerName>
  9.    <CustomerRUC>11111-1-11111</CustomerRUC>
  10.    <CustomerAddress>La Loma</CustomerAddress>
  11.    <AddInfo>
  12.       <Line id="1">Otra Información opcional</Line>
  13.       <Line id="2"></Line>
  14.       <Line id="3"></Line>
  15.       <Line id="4"></Line>
  16.       <Line id="5"></Line>
  17.       <Line id="6"></Line>
  18.       <Line id="7"></Line>
  19.       <Line id="8"></Line>
  20.    </AddInfo>
  21.    <Items>
  22.       <Item Id="1" Price="10.00" Qty="1" Desc="Producto generico" Tax="1" Code="01234567"
  23.       Comments="xxxxxx" />
  24.       <Item Id="2" Price="10.00" Qty="1" Desc="Producto generico 2" Tax="0" Code="01234577"
  25.      Comments="xxxxxx" />
  26.    </Items>
  27.    <Payments>
  28.         <Payment amt="21.40" type="01" />
  29.    </Payments>
  30. <NCType>1</NCType>
  31. </FiscalDoc>
  32.  
Coloreado en 0.002 segundos, usando GeSHi 1.0.8.4


Los datos faltantes como Items los consulto de una base de datos.

Cuando se genere el archivo xml debe quedar almacenado en el servidor.

Y al usuario se le debe mostrar un link al archivo.xml (descargarlo).
calcifer1990
Perlero nuevo
Perlero nuevo
 
Mensajes: 26
Registrado: 2011-10-03 10:15 @468

Re: Generar XML

Notapor explorer » 2012-02-24 13:07 @588

¿Y? ¿Dónde está el problema?

Puedes usar parte del código enlazado antes, para actualizar la información del xml.
JF^D Perl programming & Raku programming. Grupo en Telegram: https://t.me/Perl_ES
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14480
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España

Re: Generar XML

Notapor calcifer1990 » 2012-02-24 13:43 @613

Para serte sincero es la primera vez que trabajo con esto y la verdad no te entiendo muy bien.

¿Cómo puedo descargar el hash que contiene el xml a un archivo en mi servidor para que pueda ser visualizado por el usuario?

No sé si sea alguna opción del XMLout.

Gracias.
calcifer1990
Perlero nuevo
Perlero nuevo
 
Mensajes: 26
Registrado: 2011-10-03 10:15 @468

Re: Generar XML

Notapor irving » 2012-02-24 14:30 @646

(No lo entiendo bien.) Si quieres mostrar un archivo XML en el navegador puedes usar el módulo CGI. Otra forma es esto:

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1. #!/usr/bin/perl -w
  2. # xml.pl
  3. # chmod 755 xml.pl
  4.  
  5. print "Content-Type: text/xml\n\n";
  6. print '<?xml version="1.0" encoding="ISO-8859-1" ?>';
  7. # El resto del XML ...
  8.  
  9. # localhost/xml.pl
  10.  
Coloreado en 0.002 segundos, usando GeSHi 1.0.8.4
Búscame en twitter
Avatar de Usuario
irving
Perlero nuevo
Perlero nuevo
 
Mensajes: 10
Registrado: 2012-02-23 16:01 @709
Ubicación: Chiclayo, Lambayeque, Perú

Re: Generar XML

Notapor explorer » 2012-02-24 18:44 @822

calcifer1990 escribiste:Para serte sincero es la primera vez que trabajo con esto y la verdad no te entiendo muy bien.
Bueno, pues vamos por partes.

calcifer1990 escribiste:¿Cómo puedo descargar el hash que contiene el xml a un archivo en mi servidor para que pueda ser visualizado por el usuario?
El hash que contiene el xml, si está en un formato correcto, con XMLout(), del módulo XML::Simple(*), generará el código XML final, como una cadena de caracteres.

Esa cadena de caracteres, deberás decidir qué hacer con ella. Si la quieres entregar al usuario que acaba de hacer la petición, se la mandas por la salida estándar, como te ha indicado irving. Si no, pues lo guardas en un archivo aparte, como comentabas antes, en alguno de los directorios que puedan ser alcanzados por el servidor web, para ser servidos a los usuarios.

Estamos dando por supuesto que el programa está en el mismo servidor que el servidor web. Otra cosa es si están en sitios distintos.

*: puede llegar a ser bastante complejo encontrar el formato correcto. La palabra 'Simple', del módulo XML::Simple se refiere a que es bastante tonto, no a que nos simplifique la vida.
JF^D Perl programming & Raku programming. Grupo en Telegram: https://t.me/Perl_ES
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14480
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España

Re: Generar XML

Notapor calcifer1990 » 2012-02-27 16:19 @721

Hola,

Logré guardar el .xls en el servidor utilizando las siguientes instrucciones:

OutputFile(guardar el archivo) y XMLDecl(incluir cabecera).

que encontré en la documentación de XML::Simple.

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1. my $hashXml = {
  2.         'PrintStationId' => ['estacion impr'],
  3.         'PrinterId'  => ['id de la impresora'],
  4.         'DocType'  => ['Factura'],
  5.         'DocNumber'  => ['xxx'],
  6.         'CustomerName'  => ['Nombre cliente'],
  7.         'CustomerRuc'  => ['Ruc cliente'],
  8.         'CustomerAddress'  => ['Direccion cliente'],
  9.     };
  10.  
  11.  
  12. my $xs  = XML::Simple->new(ForceArray => 1, KeepRoot => 1, RootName => 'FiscalDoc', XMLDecl => '<?xml
  13.  
  14. version="1.0" encoding="ISO-8859-1" ?>', OutputFile => 'archivo.xml');
  15. my $xml = $xs->XMLout($hashXml);
  16.  
Coloreado en 0.003 segundos, usando GeSHi 1.0.8.4


Pero no he podido crear esta parte del xml desde el hash.

Sintáxis: [ Descargar ] [ Ocultar ]
Using xml Syntax Highlighting
  1.   <AddInfo>
  2.       <Line id="1">Otra Información opcional</Line>
  3.       <Line id="2"></Line>
  4.       <Line id="3"></Line>
  5.       <Line id="4"></Line>
  6.       <Line id="5"></Line>
  7.       <Line id="6"></Line>
  8.       <Line id="7"></Line>
  9.       <Line id="8"></Line>
  10.    </AddInfo>
  11.    <Items>
  12.       <Item Id="1" Price="10.00" Qty="1" Desc="Producto generico" Tax="1" Code="01234567"
  13.      Comments="xxxxxx" />
  14.       <Item Id="2" Price="10.00" Qty="1" Desc="Producto generico 2" Tax="0" Code="01234577"
  15.     Comments="xxxxxx" />
  16.    </Items>
  17.  
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4


¿Podrían ayudarme, por favor?

De antemano, muchas gracias.
calcifer1990
Perlero nuevo
Perlero nuevo
 
Mensajes: 26
Registrado: 2011-10-03 10:15 @468

Siguiente

Volver a Básico

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 18 invitados