Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Internet
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Colaboración Paypal con ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 05-06-2018
Matias_ Matias_ is offline
Miembro
NULL
 
Registrado: abr 2018
Posts: 11
Poder: 0
Matias_ Va por buen camino
Thumbs up Leer Archivo XML de respuesta de webServices SOAP en un ClientDataSet

Buenas Noches queridos amigos de este famoso foro hispanohablante club delphi, resulta que tengo implementado un webservices SOAP hecho en Delphi que se conecta a una bases de datos MySQL(en realidad MariaDB); al invocar unos de sus metodos publicados, el web Services me responde el siguiente mensaje en formato XML:
Código:
<DeudaList>
	<nro>1</nro>
	<fecha>29/05/2018</fecha>
	<monto>641.66</monto>
	<idpp>1</idpp>
	<saldo>0.16</saldo>
	<nro>2</nro>
	<fecha>29/06/2018</fecha>
	<monto>641.66</monto>
	<idpp>1</idpp>
	<saldo>0.66</saldo>
	<nro>3</nro>
	<fecha>29/07/2018</fecha>
	<monto>641.66</monto>
	<idpp>1</idpp>
	<saldo>0.66</saldo>
	<nro>4</nro>
	<fecha>29/08/2018</fecha>
	<monto>641.66</monto>
	<idpp>1</idpp>
	<saldo>641.66</saldo>
	<nro>5</nro>
	<fecha>29/09/2018</fecha>
	<monto>641.66</monto>
	<idpp>1</idpp>
	<saldo>641.66</saldo>
	<nro>6</nro>
	<fecha>29/10/2018</fecha>
	<monto>641.66</monto>
	<idpp>1</idpp>
	<saldo>641.66</saldo>
	<nro>7</nro>
	<fecha>29/11/2018</fecha>
	<monto>641.66</monto>
	<idpp>1</idpp>
	<saldo>641.66</saldo>
	<nro>8</nro>
	<fecha>29/12/2018</fecha>
	<monto>641.66</monto>
	<idpp>1</idpp>
	<saldo>641.66</saldo>
	<nro>9</nro>
	<fecha>29/01/2019</fecha>
	<monto>641.66</monto>
	<idpp>1</idpp>
	<saldo>641.66</saldo>
	<nro>10</nro>
	<fecha>28/02/2019</fecha>
	<monto>641.66</monto>
	<idpp>1</idpp>
	<saldo>641.66</saldo>
	<nro>11</nro>
	<fecha>29/03/2019</fecha>
	<monto>641.66</monto>
	<idpp>1</idpp>
	<saldo>641.66</saldo>
	<nro>12</nro>
	<fecha>29/04/2019</fecha>
	<monto>641.74</monto>
	<idpp>1</idpp>
	<saldo>641.74</saldo>
</DeudaList>
Como se puede apreciar en el archivo xml, se pueden distinguir 5 campos para mostrarlos en el DBGrid enganchado al clientDataset que tengo, he utilizado la herramienta "XML Mapper" del IDE de Delphi (Rad Studio>Tools>XML Mapper), para mapear y poder hacer la conversion al formato DataPacket y asi lograr que el cliendataset lea la informacion correctamente usando un componente XMLTransformProvider, pero por alguna razon solo me muestra una y solo una sola fila de la respuesta que se recibe.
Como sabran uds. , a la herramienta "XML Mapper" le pasamos el formato de archivo XML que recibimos y con esta herramientas mapeamos los campos y demas y generamos otro archivo con extension *.xdb , este archivo generado asignamos a la propiedad TransformRead.TransformationFile de la sigte. forma:
Código Delphi [-]
XMLTransformProvider1.TransformRead.TransformationFile:= 'RUTA\MiArchivo.xtr';
Obviamente tambien se lo puede hacer en tiempo de diseño en el editor de propiedades, posteriormente he configurado tambien la propiedad "ProvideName" del ClientdataSet para que se enganche al XMLTransformProvider, todo funciona correctamente, con excepcion que en el DbGrid solo se muestra la primera fila de las muchas que deberia mostrarse; pienso que talvez mi problema está en como estoy haciendo la conversion usando la herramienta "XML Mapper"(es que la verdad primera vez que la uso ), he probado a generar el archivo *.xdb de muchas formas pero no logro hacer que funcione el muestreo de datos correctamente.
Habrá un alma caritativa que me pueda hechar una mano con este asunto?
Les quedaré agradecido de antemano.
Saludos cordiales.

PostData: Estoy Usando RadStudio XE 10.2
Responder Con Cita
  #2  
Antiguo 05-06-2018
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.257
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Echa un vistazo al tutorial del compañero Neftali, seguramente encontrarás lo que buscas.
Responder Con Cita
  #3  
Antiguo 05-06-2018
Matias_ Matias_ is offline
Miembro
NULL
 
Registrado: abr 2018
Posts: 11
Poder: 0
Matias_ Va por buen camino
Arrow

Gracias Querido Camiro Notevi, le he hechado una buena leida al blog de Neftali, mas sin embargo, en ese tutorial, él esta usando JSON y no XML como formato de comunicacion entre el WebServices y los clientes, que tienen sus diferencias, ya habia pensado meterle los registro a mano al clientdataSet, pero me dije asi mismo Delphi debe tener un componente que haga esa cuestion, de ahí que me decanté por usar un XMLTransformProvider. En ultimo caso tendré no mas que recorrer el XML a mano e ir metiendo los datos a mano,aunque aun estoy dando mis pininos con Delphi en esta cuestion, si alguien me puede orientar le quedaré muy agradecido ya sea para solucionar el tema de la transformacion usando XMLTransformProvider, o recorrer a mano el xml he ir insertando al clientDataSet.
Saludos.
Responder Con Cita
  #4  
Antiguo 05-06-2018
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.257
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Pues se tratado varias veces por aquí, con ejemplos de código y todo, a ver si puedes encontrarlo, ¿has hecho alguna búsqueda por los foros?
Responder Con Cita
  #5  
Antiguo 06-06-2018
Matias_ Matias_ is offline
Miembro
NULL
 
Registrado: abr 2018
Posts: 11
Poder: 0
Matias_ Va por buen camino
Lightbulb

Muchas gracias por las respuestas Casimiro Notevi, les comparto como he solucionado el tema en cuestion:
He modificado la aplicacion del webServices en el servidor para que la respuesta XML tenga el siguiente formato:
Código:
<DeudaList>
<Registro>
  <nro>1</nro>
  <fecha>29/05/2018</fecha>
  <monto>641.66</monto>
  <idpp>1</idpp>
  <saldo>0.16</saldo>
</Registro>
<Registro>
  <nro>2</nro>
  <fecha>29/06/2018</fecha>
  <monto>641.66</monto>
  <idpp>1</idpp>
  <saldo>0.66</saldo>
</Registro>
<Registro>
  <nro>3</nro>
  <fecha>29/07/2018</fecha>
  <monto>641.66</monto>
  <idpp>1</idpp>
  <saldo>0.66</saldo>
</Registro>
<Registro>
  <nro>4</nro>
  <fecha>29/08/2018</fecha>
  <monto>641.66</monto>
  <idpp>1</idpp>
  <saldo>641.66</saldo>
</Registro>
<Registro>
  <nro>5</nro>
  <fecha>29/09/2018</fecha>
  <monto>641.66</monto>
  <idpp>1</idpp>
  <saldo>641.66</saldo>
</Registro>
<Registro>
  <nro>6</nro>
  <fecha>29/10/2018</fecha>
  <monto>641.66</monto>
  <idpp>1</idpp>
  <saldo>641.66</saldo>
</Registro>
<Registro>
  <nro>7</nro>
  <fecha>29/11/2018</fecha>
  <monto>641.66</monto>
  <idpp>1</idpp>
  <saldo>641.66</saldo>
</Registro>
<Registro>
  <nro>8</nro>
  <fecha>29/12/2018</fecha>
  <monto>641.66</monto>
  <idpp>1</idpp>
  <saldo>641.66</saldo>
</Registro>
<Registro>
  <nro>9</nro>
  <fecha>29/01/2019</fecha>
  <monto>641.66</monto>
  <idpp>1</idpp>
  <saldo>641.66</saldo>
</Registro>
<Registro>
  <nro>10</nro>
  <fecha>28/02/2019</fecha>
  <monto>641.66</monto>
  <idpp>1</idpp>
  <saldo>641.66</saldo>
</Registro>
<Registro>
  <nro>11</nro>
  <fecha>29/03/2019</fecha>
  <monto>641.66</monto>
  <idpp>1</idpp>
  <saldo>641.66</saldo>
</Registro>
<Registro>
  <nro>12</nro>
  <fecha>29/04/2019</fecha>
  <monto>641.74</monto>
  <idpp>1</idpp>
  <saldo>641.74</saldo>
</Registro>
</DeudaList>
En resumen he puesto una etiqueta llamada <Registro> </Registro> en cada fila correspondiente a los datos, he vuelto a utilizar la herramienta XML Mapper del IDE de RadStudio, con este nuevo formato XML y generado un nuevo archivo *.xdb, con el cual el XMLTransformProvider ha trabajado perfectamente y los datos se muestran perfectamente. Comparto esta solucion por si a alguien le pueda servir.
Saludos cordiales.
Responder Con Cita
  #6  
Antiguo 06-06-2018
Avatar de ElKurgan
[ElKurgan] ElKurgan is offline
Miembro Premium
 
Registrado: nov 2005
Posts: 1.237
Poder: 20
ElKurgan Va camino a la fama
Gracias por compartir la solución.

Saludos
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Lentitud al leer ClientDataSet.ChangeCount / Delta rcarrillom Providers 14 11-06-2014 20:21:16
WebServices HTTPRIO SOAP XmlBlackBox ppb Internet 1 06-11-2012 18:55:04
Dudas sobre Webservices Soap y Indy XaviQ OOP 6 30-03-2011 08:12:18
leer archivo log Producto77 Varios 1 24-03-2009 17:48:21
Al guardar un clientDataSet en archivo no me mantiene los cambios David Conexión con bases de datos 1 12-08-2008 15:15:07


La franja horaria es GMT +2. Ahora son las 03:03:00.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi