FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
#1
|
|||
|
|||
¿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. |
#2
|
||||
|
||||
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. |
#3
|
||||
|
||||
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. |
#4
|
||||
|
||||
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 |
#5
|
|||
|
|||
Cita:
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 |
#6
|
||||
|
||||
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 |
#7
|
|||
|
|||
Cita:
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. |
#8
|
|||
|
|||
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. |
#9
|
||||
|
||||
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 |
|
|
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 |
|