Víctor, quien lea esos consejos de text-endtext podrá creer que vfp
no tiene forma de hacer buen trabajo con xml, y eso no sólo no es así,
sino que es todo lo contrario.
Sería interesante ver como generan ese archivo xml, no partiendo de la
tabla MyCursor, sino con la data normalizada Individuo->Direccion /
visitas ( que sería la estructura del sistema real ) y suponiendo
que tengan que manejar no 5 campos, sino 50 o 100, o aplicar
transformaciones al xml.
Vfp entrega un sinnúmero de herramientas para el trabajo con Xml y
vale la pena estudiarlas y usarlas, aunque el tiempo escaso a veces
nos lleve por 'el camino corto' del textmerge.
Usen el xmladapter, el resultado siempre será un código mas limpio ,
ajustado a la norma y fácil de mantener.
Saludos
Marco
> >> > > > > *-----------------------------**------------------------------
> >> > > > > CLOSE DATABASES
>
> >> > > > > Create CURSOR MyCursor(id c(9),Nombre c(30),Apellido c(20),Sexo
> >> > > > > c(1),domicilio c(40),provincia c(35),cp c(9),fecha d(8),kilos
> >> > > > > n(5,1),altura n(5,1),nota c(254))
>
> >> > > > > INSERT INTO mycursor ;
> >> > > > > (
> >> > > id,NOMBRE,APELLIDO,SEXO,**DOMICILIO,PROVINCIA,CP,FECHA,**KILOS,ALTURA,NOTA
> >> )
> >> > > > > ;
> >> > > > > VALUES ;
> >> > > > > ( '123','DANIEL ROBERTO','GONZALES','M','**alvarado
> >> 15','Chubut','5454',
> >> > > > > {^2012/03/26},54.1,152.3,'**primer control')
>
> >> > > > > SELECT id,nombre,apellido,sexo FROM mycursor INTO TABLE individuo
> >> > > > > INDEX on id TAG id
> >> > > > > SELECT id,domicilio,provincia,cp FROM mycursor INTO TABLE
> >> direccion
> >> > > > > INDEX on id TAG id
> >> > > > > SELECT id,fecha,kilos,altura,nota FROM mycursor INTO TABLE hoy
> >> > > > > INDEX on id TAG id
>
> >> > > > > USE individuo IN 0 AGAIN ALIAS codigo ORDER id
> >> > > > > USE individuo IN 0 AGAIN ALIAS visitas ORDER id
>
> >> > > > > SET RELATION TO id INTO codigo IN individuo
> >> > > > > SET RELATION TO id INTO direccion IN codigo
> >> > > > > SET RELATION TO id INTO Visitas IN codigo additive
> >> > > > > SET RELATION TO id INTO hoy IN Visitas
>
> >> > > > > SELECT codigo
> >> > > > > SET FIELDS TO all
>
> >> > > > > SELECT direccion
> >> > > > > SET FIELDS TO domicilio,provincia,cp
>
> >> > > > > SELECT hoy
> >> > > > > SET FIELDS TO fecha,kilos,altura,nota
>
> >> > > > > oXml = CREATEOBJECT('xmladapter')
>
> >> > > > > WITH oXml
>
> >> > > > > .RespectNesting= .T.
> >> > > > > .xmlSchemalocation = ''
> >> > > > > .AddTableSchema('individuo',.**f.)
> >> > > > > .AddTableSchema('codigo',.f.)
> >> > > > > .AddTableSchema('direccion',.**f.)
> >> > > > > .AddTableSchema('Visitas',.f.)
> >> > > > > .AddTableSchema('hoy',.f.)
> >> > > > > .ToXML('test.xml',,.t.)
>
> >> > > > > ENDWITH
>
> >> > > > > MODIFY FILE test.xml
>
> >> > > ************************************************************************************
>
> >> > > > > On 27 abr, 15:22, Marco Plaza <
stmapw...@gmail.com> wrote:
> >> > > > > > Hola Rafael, el problema es que tienes es que deseas obtener
> >> una
> >> > > > > > salida xml con elementos anidados a partir de una tabla
> >> > > > > > desnormalizada.
> >> > > > > > aqui mando el codigo completo que hace el archivo tal como lo
> >> > > > > > necesitas. ( requirió una trampita para envolver las visitas en
> >> un
> >> > > > > > elemento ) pero ahi ven que potente es fox con los cursores.
>
> >> > > > > > Saludos.
>
> >> > > > > > Marco
>
> >> > > > > > *-----------------------------**----------
>
> >> > > > > > CLOSE DATABASES
>
> >> > > > > > Create CURSOR MyCursor(id c(9),Nombre c(30),Apellido c(20),Sexo
> >> > > > > > c(1),domicilio c(40),provincia c(35),cp c(9),fecha d(8),kilos
> >> > > > > > n(5,1),altura n(5,1),nota c(254))
>
> >> > > > > > INSERT INTO mycursor ;
> >> > > > > > (
> >> > > id,NOMBRE,APELLIDO,SEXO,**DOMICILIO,PROVINCIA,CP,FECHA,**KILOS,ALTURA,NOTA
>
> >> > > > > ) ;
> >> > > > > > VALUES ;
> >> > > > > > ( '123','DANIEL ROBERTO','GONZALES','M','**alvarado
> >> > > 15','Chubut','5454',
> >> > > > > > {^2012/03/26},54.1,152.3,'**primer control')
>
> >> > > > > > SELECT id,nombre,apellido,sexo FROM mycursor INTO TABLE codigo
> >> > > > > > INDEX on id TAG id
> >> > > > > > SELECT id,domicilio,provincia,cp FROM mycursor INTO TABLE
> >> direccion
> >> > > > > > INDEX on id TAG id
> >> > > > > > SELECT id,fecha,kilos,altura,nota FROM mycursor INTO TABLE hoy
> >> > > > > > INDEX on id TAG id
>
> >> > > > > > USE codigo IN 0 AGAIN ALIAS Visitas ORDER id
>
> >> > > > > > SET RELATION TO id INTO direccion IN codigo
> >> > > > > > SET RELATION TO id INTO Visitas IN codigo additive
> >> > > > > > SET RELATION TO id INTO hoy IN Visitas
>
> >> > > > > > SELECT codigo
> >> > > > > > SET FIELDS TO all
>
> >> > > > > > SELECT direccion
> >> > > > > > SET FIELDS TO domicilio,provincia,cp
>
> >> > > > > > SELECT hoy
> >> > > > > > SET FIELDS TO fecha,kilos,altura,nota
>
> >> > > > > > oXml = CREATEOBJECT('xmladapter')
>
> >> > > > > > WITH oXml
>
> >> > > > > > .RespectNesting= .T.
> >> > > > > > .xmlSchemalocation = ''
> >> > > > > > .AddTableSchema('codigo',.f.)
> >> > > > > > .AddTableSchema('direccion',.**f.)
> >> > > > > > .AddTableSchema('Visitas',.f.)
> >> > > > > > .AddTableSchema('hoy',.f.)
> >> > > > > > .ToXML('test.xml',,.t.)
>
> >> > > > > > ENDWITH
>
> >> > > > > > MODIFY FILE test.xml
>
> >> > > > > > *-----------------------------**----------