Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

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

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 07-11-2011
comba comba is offline
Miembro
 
Registrado: feb 2004
Posts: 89
Poder: 21
comba Va por buen camino
Smile ¿Esto es un xml?¿y como se puede leer?

Hola a todos

Utilizo D6 y estoy consumiendo un web service. Todo funciona bien y el web service me devuelve un xml, si se puede decir eso, ya que no he trabajado casi nada con los xml, pero no se parece mucho a los ejemplos que veo por internet.
¿Como puedo extraer los datos de cada linea?

<consulta_usuarios>
<nombre_apellidos ="jose xxxx" alias_clubdelphi="comba" ciudad_residencia="Valencia"/>
<nombre_apellidos ="Pepe Luis xxxx" alias_clubdelphi="delphi" ciudad_residencia="Barcelona"/>
</consulta_usuarios>

Un saludo y muchas gracias.
Responder Con Cita
  #2  
Antiguo 08-11-2011
Avatar de kuray
kuray kuray is offline
Miembro
 
Registrado: ago 2006
Posts: 3
Poder: 0
kuray Va por buen camino
No recuerdo en qué paleta está en D6, pero busca un componente llamado TXMLDoc o TXMLDocument. Puede que esté en la paleta de Internet.

para leer los datos, busca IXMLNode en la ayuda, o en el foro, que hay varios ejemplos.
Responder Con Cita
  #3  
Antiguo 08-11-2011
Avatar de Neftali [Germán.Estévez]
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is offline
[becario]
 
Registrado: jul 2004
Ubicación: Barcelona - España
Posts: 18.282
Poder: 10
Neftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en bruto
Hay una forma muy sencilla, de cargar los datos de un XML a un TDataset para trabajar con ellos. Delphi trae una herramienta llamada XMLMapper. Échale un vistazo a esta entrada y verás que es sencilla de utilizar.
__________________
Germán Estévez => Web/Blog
Guía de estilo, Guía alternativa
Utiliza TAG's en tus mensajes.
Contactar con el Clubdelphi

P.D: Más tiempo dedicado a la pregunta=Mejores respuestas.
Responder Con Cita
  #4  
Antiguo 08-11-2011
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
Por otro lado, se supone que Delphi tiene herramientas especiales para manejar servicios Web. Estas herramientas se encargan, entre otras cosas, de mapear los xml en clases listas para usar en código.

Lo que no sé es si Delphi 6 está preparado para trabajar con las versiones más recientes de los servicios web.

// Saludos
Responder Con Cita
  #5  
Antiguo 08-11-2011
[egostar] egostar is offline
Registrado
 
Registrado: feb 2006
Posts: 6.557
Poder: 25
egostar Va camino a la fama
Cita:
Empezado por roman Ver Mensaje
Por otro lado, se supone que Delphi tiene herramientas especiales para manejar servicios Web. Estas herramientas se encargan, entre otras cosas, de mapear los xml en clases listas para usar en código.

Lo que no sé es si Delphi 6 está preparado para trabajar con las versiones más recientes de los servicios web.

// Saludos
Hola roman

Esto depende de que el webservice regrese la información en una clase TRemotable con cierta estructura y al generar el wsdl con el importador que tiene Delphi automáticamente genera la clase para obtener los datos, pero algunos webservice lo que regresan es el "texto" del XML en una variable widestring y tocará utilizar el componente IXMLDocument y IXMLNode como ya lo han mencionado. Si comba hace una búsqueda en ClubDelphi hay muchos ejemplos de su uso.

Saludos
Responder Con Cita
  #6  
Antiguo 08-11-2011
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
Hola Eliseo, gusto en leerte.

No estoy muy de acuerdo con esto que comentas. Un servicio web sólo sabe de xml, que es el lenguaje en que se comunica (las peticiones, las repuestas y los tipos de datos están especificados con xml, y el xml es, a fin de cuentas, una cadena de texto); es Delphi quien se encarga de traducir el xml a una clase TRemotable.

Lo que pasa es que, según recuerdo, el impórtador wsdl de Delphi 6/7 no puede manejar la versión nueva del protocolo, aunque hay por ahí unos parches que lo hacen.

// Saludos
Responder Con Cita
  #7  
Antiguo 08-11-2011
[egostar] egostar is offline
Registrado
 
Registrado: feb 2006
Posts: 6.557
Poder: 25
egostar Va camino a la fama
Cita:
Empezado por roman Ver Mensaje
Hola Eliseo, gusto en leerte.

No estoy muy de acuerdo con esto que comentas. Un servicio web sólo sabe de xml, que es el lenguaje en que se comunica (las peticiones, las repuestas y los tipos de datos están especificados con xml, y el xml es, a fin de cuentas, una cadena de texto); es Delphi quien se encarga de traducir el xml a una clase TRemotable.

Lo que pasa es que, según recuerdo, el impórtador wsdl de Delphi 6/7 no puede manejar la versión nueva del protocolo, aunque hay por ahí unos parches que lo hacen.

// Saludos
Efectivamente roman, todo lo que pasa por un webservice es a través de SOAP que finalmente es un XML, el asunto es que si en el webservice se generan clases el wsdl contendrá dichas definiciones y el importador obtendrá las referencias adecuadas y podrás acceder a los datos a través de su propiedad, si en lugar de una clase regresan un string a pesar de que es un XML no cuentas con la definición de la clase por lo que tendrías que parsear el XML a través de lo que ya se mencionó.

Referente a la versión del protocolo SOAP, si, tienes razón, hasta Delphi2010 puedes acceder a la versión 1.1 del SOAP, a partir de XE ya puedes acceder a cualquier versión 1.1 o 1.2.

Edito: Por otro lado, habría que ver que comba utilice el Importador de wsdl, si utiliza por ejemplo curl, pues si, el RESPONSE es un string que se debe parsear si o si.

Saludos

Última edición por egostar fecha: 08-11-2011 a las 20:07:48.
Responder Con Cita
  #8  
Antiguo 09-11-2011
comba comba is offline
Miembro
 
Registrado: feb 2004
Posts: 89
Poder: 21
comba Va por buen camino
Smile

Efectivamente como dice egostar lo que devuelve el webservice es un string a pesar de ser un xml.

Muchas gracias por vuestra colaboración, creo que ya tengo resuelto el problema.
Responder Con Cita
  #9  
Antiguo 09-11-2011
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
Es bueno que hayas resuelto tu problema. Sin embargo, creo que no está de más notar que un web service devuelve su respuesta siempre como una respuesta HTTP, así que siempre será un texto (es decir, un string). Lo que sucede es que muchos web services están mal implementados y no definen bien el wsdl, razón por la cual el importador de delphi no puede funcionar.

// 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
Tu mac puede hacer esto????? AzidRain Humor 10 24-11-2010 00:16:25
Se puede hacer esto? Migpal OOP 3 22-10-2005 20:02:30
Se puede hacer esto ??????? AMINOA2R Firebird e Interbase 2 21-10-2005 17:50:59
Se puede hacer esto en POO? adlfv OOP 8 26-09-2005 16:28:55


La franja horaria es GMT +2. Ahora son las 01:42:48.


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