Buenos días,

me informaré. 
muchas gracias



Elvira Jurado Leiva - Dpto. Informática 
Tlf.: 914791512 (ext.165) - Fax: 914631790 
informat...@fsoria.com - www.f-soria.es 

AVISO DE CONFIDENCIALIDAD 
La información contenida en este mensaje y archivos adjuntos es privada, 
confidencial y de uso exclusivo de la(s) persona(s) y entidad(es) a la(s) 
que va dirigido. Si Ud. no es el destinatario de esta información se le 
notifica que está expresamente prohibida la declaración, reproducción, 
distribución o la toma de cualquier acción basada en el contenido de esta 
comunicación. Si ha recibido este mensaje por error, le rogamos que nos lo 
comunique inmediatamente y proceda a eliminarlo de todos sus sistemas. 
Francisco Soria Melguizo, S.A. no asume responsabilidad legal por el 
contenido de esta comunicación, ni representa la opinión de la firma, 
salvo que expresamente se especifique lo contrario y que el remitente esté 
autorizado para hacerlo. Gracias. 




De:     Julio Ríos <jr...@grupopsn.es>
Para:   "forum.help400" <forum.help400@listas.combios.es>, 
Fecha:  31/05/2018 07:59
Asunto: RE: Convertir datos a XLM
Enviado por:    forum.help400-boun...@listas.combios.es



Buenos días yo usaría Python desde el iseries.
 
Te adjunto un ejemplo de cómo sería:
 

Cambia el contenido de la variable sql y ejecuta el script. Esto generará 
si la consulta es corecta y devuelve dato un fichero en la ruta donde diga 
la variable ficheroXML
#!/usr/bin/env python
# -*- coding: utf-8 -*-
#
#  Meto los registros de una consulta SQL en un fichero XML 
#  Autor Julio Ríos
 
def CrearXML(cabecera, datos, ficheroXML):
  '''
    Creo un fichero xml a partir de una consulta SQL
    cabecera son los nombres de los elementos xml
    datos son los registros de la consulta xml
  '''
  # Creo el fichero XML
  outfile = file(ficheroXML, 'w')
  '''
    Empiezo el fichero XML
  '''
  outfile.write('<?xml version="1.0" ?>\n')
  outfile.write('<consultaSQL>\n')
  for i in range(len(datos)):
    outfile.write('  <registro>\n')
    for j in range(len(cabecera)):
      cadena = '    <' + cabecera[i] + '>' + str(datos[i][j]) + '</' + 
cabecera[i] +'>\n'
      outfile.write(cadena)
    outfile.write('  </registro>\n')
  '''
    Cierro el fichero xml
  '''
  outfile.write('</consultaSQL>\n')
  outfile.close()
 
def DevolverDatos(sql):
  '''
    Dada una consulta SQL guardo en una lista todo el contenido que 
devuelve la base de datos
  '''
  import db2
  # Establezco conexión
  conn = db2.connect()
  # Declaro un cursosr o recordset
  curs = conn.cursor()
  curs.execute(sql)
  #one_row = curs.fetchone()
  many_rows = curs.fetchall()
  # Cierro conexiones
  curs.close()
  conn.close() 
  return many_rows
 
def DevolverTipoDatosConsulta(Consulta):
  '''
    Dada una consulta SQL guardo en una lista el nombre de los campos de 
la consulta
  '''
  # Devuelto el nombre de los campos de la consulta
  import db2
  # Declaro la conexión
  Conexion = db2.connect()
  RecordSet = Conexion.cursor() 
  try:
    RecordSet.execute(Consulta)
  except:
    print 'La conxulta ' + Consulta + ' no se puede ejecutar'
  x = 0
  col = {}
  Aux = []
  for each in RecordSet.description:
    Aux.append(each[0])
    col[each[0]] = x
    x += 1 
  # Cierro el conjunto de datos
  RecordSet.close()
  # Cierro la conexion
  Conexion.close()
  return Aux
 
def Ejecutar(sql):
                import db2
                c = db2.connect('','','','',True)
                crs = c.cursor()
                try:
                               crs.execute(sql)
                               c.commit()
                               Aux = True
                except:
                               Aux = False
                return Aux
 
def main(args):
  sql = "SELECT * FROM JULIO.PRUEBA"
  CamposDatos = DevolverTipoDatosConsulta(sql)
  Todoslosdatos = DevolverDatos(sql)
  ficheroXML = '/tmp/novale.xml'
  CrearXML(CamposDatos, Todoslosdatos, ficheroXML) 
 
if __name__ == '__main__':
  import sys
  sys.exit(main(sys.argv))
 
Como ejemplo sobre una tabla de prueba 
 

<?xml version="1.0" ?>
<consultaSQL>
  <registro>
    <ODDCEN>1</ODDCEN>
    <ODDCEN>260817</ODDCEN>
    <ODDCEN>154142</ODDCEN>
    <ODDCEN>DNIPRU</ODDCEN>
    <ODDCEN>DNI010CL</ODDCEN>
    <ODDCEN>*PGM</ODDCEN>
    <ODDCEN>CLP</ODDCEN>
    <ODDCEN>0</ODDCEN>
    <ODDCEN>40960</ODDCEN>
    <ODDCEN>Crear objeto duplicado del fichero de trabajo</ODDCEN>
    <ODDCEN>0</ODDCEN>
    <ODDCEN>0</ODDCEN>
    <ODDCEN>1</ODDCEN>
    <ODDCEN>080102</ODDCEN>
    <ODDCEN>092619</ODDCEN>
    <ODDCEN>QDFTOWN</ODDCEN>
    <ODDCEN>1</ODDCEN>
    <ODDCEN>082617</ODDCEN>
    <ODDCEN>054215</ODDCEN>
    <ODDCEN>SAVLIB</ODDCEN>
    <ODDCEN>40960</ODDCEN>
    <ODDCEN>0</ODDCEN>
    <ODDCEN>Cinta</ODDCEN>
    <ODDCEN>Dato</ODDCEN>
    <ODDCEN></ODDCEN>
    <ODDCEN></ODDCEN>
    <ODDCEN></ODDCEN>
    <ODDCEN></ODDCEN>
    <ODDCEN></ODDCEN>
    <ODDCEN></ODDCEN>
    <ODDCEN></ODDCEN>
    <ODDCEN></ODDCEN>
    <ODDCEN></ODDCEN>
    <ODDCEN>0</ODDCEN>
    <ODDCEN>1</ODDCEN>
    <ODDCEN>082617</ODDCEN>
    <ODDCEN>115636</ODDCEN>
    <ODDCEN>999999</ODDCEN>
    <ODDCEN>QCLSRC</ODDCEN>
    <ODDCEN>DNIPRU</ODDCEN>
    <ODDCEN>DNI010CL</ODDCEN>
    <ODDCEN>1</ODDCEN>
    <ODDCEN>020801</ODDCEN>
    <ODDCEN>092613</ODDCEN>
    <ODDCEN></ODDCEN>
    <ODDCEN></ODDCEN>
    <ODDCEN></ODDCEN>
    <ODDCEN>1</ODDCEN>
    <ODDCEN></ODDCEN>
    <ODDCEN></ODDCEN>
    <ODDCEN></ODDCEN>
    <ODDCEN></ODDCEN>
    <ODDCEN>44</ODDCEN>
    <ODDCEN>1</ODDCEN>
    <ODDCEN>082617</ODDCEN>
    <ODDCEN>115636</ODDCEN>
    <ODDCEN></ODDCEN>
    <ODDCEN></ODDCEN>
    <ODDCEN>1</ODDCEN>
    <ODDCEN>DNIPRU</ODDCEN>
    <ODDCEN></ODDCEN>
    <ODDCEN>IDDDDDDD</ODDCEN>
    <ODDCEN>USER</ODDCEN>
    <ODDCEN>SISSI</ODDCEN>
    <ODDCEN>Y</ODDCEN>
    <ODDCEN></ODDCEN>
    <ODDCEN></ODDCEN>
    <ODDCEN>0</ODDCEN>
    <ODDCEN></ODDCEN>
    <ODDCEN></ODDCEN>
    <ODDCEN>*U</ODDCEN>
    <ODDCEN>V5R1M0</ODDCEN>
    <ODDCEN></ODDCEN>
    <ODDCEN></ODDCEN>
    <ODDCEN>N</ODDCEN>
    <ODDCEN>0</ODDCEN>
    <ODDCEN>1</ODDCEN>
    <ODDCEN>0</ODDCEN>
    <ODDCEN></ODDCEN>
    <ODDCEN>1</ODDCEN>
    <ODDCEN>082617</ODDCEN>
    <ODDCEN>054226</ODDCEN>
    <ODDCEN>*NONE</ODDCEN>
    <ODDCEN>80</ODDCEN>
    <ODDCEN>512</ODDCEN>
    <ODDCEN>*NONE</ODDCEN>
    <ODDCEN>44</ODDCEN>
    <ODDCEN>0</ODDCEN>
    <ODDCEN>0</ODDCEN>
    <ODDCEN></ODDCEN>
    <ODDCEN></ODDCEN>
    <ODDCEN></ODDCEN>
    <ODDCEN></ODDCEN>
    <ODDCEN></ODDCEN>
    <ODDCEN></ODDCEN>
    <ODDCEN></ODDCEN>
    <ODDCEN>80</ODDCEN>
    <ODDCEN>512</ODDCEN>
    <ODDCEN>1</ODDCEN>
    <ODDCEN>1</ODDCEN>
    <ODDCEN>*SYSBAS</ODDCEN>
    <ODDCEN>*SYSBAS</ODDCEN>
    <ODDCEN>0</ODDCEN>
    <ODDCEN>0</ODDCEN>
    <ODDCEN>4096</ODDCEN>
    <ODDCEN>1</ODDCEN>
    <ODDCEN>*SYSBAS</ODDCEN>
    <ODDCEN>*SYSBAS</ODDCEN>
    <ODDCEN></ODDCEN>
    <ODDCEN></ODDCEN>
    <ODDCEN></ODDCEN>
    <ODDCEN></ODDCEN>
    <ODDCEN></ODDCEN>
  </registro>
</consultaSQL>
 
 
Un saludo.
 
 
 
De: forum.help400-boun...@listas.combios.es [
mailto:forum.help400-boun...@listas.combios.es] En nombre de Elvira Jurado
Enviado el: martes, 29 de mayo de 2018 16:08
Para: forum.help400@listas.combios.es
Asunto: Convertir datos a XLM
 
Hola, 

alguno conoce alguna utilidad para poder recuperar datos del as400 y 
convertir a XML ? 
Un cliente quiere enviar sus factura de manera electrónica y no quiere 
invertir mucho dinero. 

Muchas gracias a todos



Elvira Jurado Leiva - Dpto. Informática 
Tlf.: 914791512 (ext.165) - Fax: 914631790 
informat...@fsoria.com - www.f-soria.es 
AVISO DE CONFIDENCIALIDAD 
 

La información contenida en este mensaje y archivos adjuntos es privada, 
confidencial y de uso exclusivo de la(s) persona(s) y entidad(es) a la(s) 
que va dirigido. Si Ud. no es el destinatario de esta información se le 
notifica que está expresamente prohibida la declaración, reproducción, 
distribución o la toma de cualquier acción basada en el contenido de esta 
comunicación. Si ha recibido este mensaje por error, le rogamos que nos lo 
comunique inmediatamente y proceda a eliminarlo de todos sus sistemas. 
Francisco Soria Melguizo, S.A. no asume responsabilidad legal por el 
contenido de esta comunicación, ni representa la opinión de la firma, 
salvo que expresamente se especifique lo contrario y que el remitente esté 
autorizado para hacerlo. Gracias. 
____________________________________________________
Únete a Recursos AS400, nuestra Comunidad ( http://bit.ly/db68dd )
Forum.Help400 © Publicaciones Help400, S.L.
____________________________________________________
Únete a Recursos AS400, nuestra Comunidad ( http://bit.ly/db68dd )
Forum.Help400 © Publicaciones Help400, S.L.

Responder a