Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Conexión con bases de datos (https://www.clubdelphi.com/foros/forumdisplay.php?f=2)
-   -   Tablas XML desde Delphi (https://www.clubdelphi.com/foros/showthread.php?t=12625)

RobertoAmores 22-07-2004 14:05:26

Tablas XML desde Delphi
 
Necesito leer tablas XML con Delphi, algunas para trabajar
con los datos y otras para guardar los registros en InterBase. He estado
buscando información pero no encuentro mucho, tengo el "Delphi developer's
guide to XML" pero no lo he terminado de mirar. También hay muchos hilos que hablan de MyBase, tanto aqui en ClubDelphi como por los grupos de trabajo de google, pero en ningun lado he encontrado nada para poder trabajar con MyBase, solo en http://www2.wjjsoft.com/download.html he podido encontrar algo, pero son muchas descargas y no se cual es la que me conviene, ni siquiera si alguna de ellas realmente puede ayudarme para hacer lo que pretendo.

Podrían ayudarme, necesito terminar eso para un proyecto, y estoy bloqueado en ese punto, por favorrrrrrrrrrrr. Y muchas gracias por anticipado.

¿Sabeis algo sobre MyBase? O si se os ocurriera alguna otra alternativa, pues la escucharé.

marto 22-07-2004 16:11:11

Wop!

Dependiendo de la versión de Delphi con la que trabajes tienes distintas opciones. Si es una versión 6 o superior, Enterprise o Arquitect, tienes una suite de componentes TXML... que te irán de maravilla. Si, como yo, cuentas con versiones anteriores o inferiores (yo trabajo con D6 Professional) tendrás qeu hacer algo más "manual". Yo me importo la MSXML.dll, que genera un .pas con las interfaces que necesitas, y trabajo con ellas. Las ventajas son que si te acostumbras a ellas las usarás en todos los entornos de M$ (por ejemplo desde js en IE) y que el parser es bastante rápido. Además en la msdn encontrarás una extensa documentación.

Sobre lo de MyBase, he leído algo (esencialmente el capítulo dedicado de La Cara Oculta de Delphi 6), pero nunca he trabajado con ella... creo que fue un chasco más que otra cosa :)

__marcsc 22-07-2004 16:26:26

Hola, qué tal?

A ver te cuento las cosillas que yo sé...

Ante todo, una cosa muy importante, MyBase solo te servirá en entornos monousuario, es una restricción que tiene.

En segundo lugar, el procedimiento a utilizar dependerá de la estructura que tengan tus ficheros XML.

Básicamente, MyBase te permite cargar ficheros XML y trabajar con ellos como si fuesen un un DataSet. Concretamente el componente a utilizar es el ClientDataSet. Ahora bien, en un cds solamente puedes cargar ficheros XML que cumplan con el formato Borland llamado DataPacket. Imagino que tus XML NO siguen este formato, por tanto lo que tendrias que hacer seria adaptarlos para DataPacket. Necesitas definir dos transformaciones: Una para pasar de XML plano a Data Packet y otra para pasar de Data Packet a XML plano. La herramienta XML Mapper que viene con Delphi sirve para definir estas transformaciones.

Verás que es muy sencillo utilizar el XML Mapper, simplemente cargas en el árbol de la izquierda el fichero plano, seleccionas todos sus nodos y le das a la opcción de menú

Create->Data Packet from XML.

Ahora debes guardar esta transformación. Verás que las transformaciones son ficheros XML con la extensión xtr. Una vez hecho esto te interesará, imagino, definir la transformación inversa, para ello utiliza la opción

Create->XML from Data Packet.

Y guarda la transformación con otro nombre.

Vale, todo esto es mucho rollo, ahora aclaremos un poco las cosas...

Nosotros tenemos un fichero plano XML, sabemos que tenemos que transformarlo en un XML Data Packet y luego tenemos que cargarlo en un ClientDataSet.

Existe un componente que hace esta transformación y que permite pasar estos datos al DataSet. El componente se llama TXMLTransformProvider.

Este componente tiene 3 propiedades:

- XMLDataFile: La ruta de tu fichero XML plano.
- XMLTransformRead, donde le tienes que especificar la ruta del fichero de transformación xtr para convertir a Data Packet.
- XMLTransformWrite, donde le especificas el fichero de transformación para convertir de Data Packet a XML plano.

De alguna manera lo que hace este componente es decir al ClientDataSet cómo debe transformar tus datos en Data Packet cuando haces consultas para poder cargarlos en un DataSet, y como pasar de la caché del DataSet a XML plano cuando haces inserciones/actualizaciones/borrados.

Una vez tienes hecho esto, ya puedes agregar un componente TClientDataSet y especificar en su propiedad ProviderName el nombre del componente TXMLTransformProvider.

Ahora ya deberías poder trabajar con el ClientDataSet de manera normal, es decir agregar los campos, navegar, etc.

Esto es lo básico, para que puedas hacer la conexión, no te doy detalles más concretos porqué supongo que ya podrás investigar y encontrarás referencias en tu libro "Delphi developer's guide to XML".

De todos modos si tienes alguna duda, pregunta por aquí a ver si te podemos dar un cable.

Espero que te sirva de ayuda mi post, aunque soy consciente que está un poco desordenado.

Suerte!

Gonzalo Giraldo 22-07-2004 20:57:27

XMLDataSet
 
Mira este componente que acabo de encontrar talvez te puede ayudar, se llama XMLDataset y lo encuentras en este Site http://www.arayan.com/basri/

No lo he probado aún, pero me cuentas como te fue..

Tengo un problema y es que no he podido leer en Delphi 7 un XML que es generado por un Dataset de .NET, detallando rapidamente es un XML que me devuelve un WebService de .NET y quiero trabarlo en una Grilla para manipular los datos..., si no encuentro nada tendré que hacerlo..:( desde cero...

Buena suerte

RobertoAmores 23-07-2004 10:38:23

Muchas gracias por la rapidez, voy a ver que puedo hacer y os mantengo informados. Chao.

Cañones 06-07-2010 03:41:03

Cita:

Empezado por marcsc (Mensaje 55786)
Hola, qué tal?

A ver te cuento las cosillas que yo sé...

Gracias, ya me voy a poner a investigar.
Saludos.


La franja horaria es GMT +2. Ahora son las 12:22:24.

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