Ver Mensaje Individual
  #3  
Antiguo 22-07-2004
Avatar de __marcsc
__marcsc __marcsc is offline
Miembro
 
Registrado: may 2003
Ubicación: Girona
Posts: 577
Reputación: 21
__marcsc Va por buen camino
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!

Última edición por __marcsc fecha: 22-07-2004 a las 16:36:08.
Responder Con Cita