Esto, sin más, es lo que utilizo para generar dos cursores a partir de un XML anidado:
cORIGEN=ALLTRIM(C:\TMP\ARCHIVO.XML)
oMyAdapter=CREATEOBJECT("xmladapter")
oMyAdapter.LoadXML(cORIGEN,.T.,.T.)
oMyAdapter.Tables.Item(1).ToCursor() && Crea la tabla Nº 1
oMyAdapter.Tables.Item(2).ToCursor() && Crea la Tabla Nº 2
Saludos
Juan España Agüera (Málaga España)
<http://www.foxgoing.com/> www.foxgoing.com
Descripción: C:\SOFT\Firma_archivos\image001.gif952 282 280
Descripción: C:\SOFT\Firma_archivos\image002.gif687 819 699
Descripción: C:\SOFT\Firma_archivos\[email protected]
De: [email protected] [mailto:[email protected]] En nombre de Gabo Rodriguez
Enviado el: lunes, 14 de enero de 2013 17:04
Para: GUFA List Member
Asunto: [GUFA] Leer multiples tablas de un archivo XML
Hola Gente.
Estoy necesitando leer 2 tablas (cabera y detalle) guardadas en un archivo
XML y no consigo hacerlo.
Este es el codigo de "José G. Samper" que estoy intentando ejecutar pero una
vez que hace el loadXML siempre me queda el "loXmladapter.Tables.Count=0"
Local loXmladapter As Xmladapter
Local lcDataset As String,loXML As MSXML.DOMDocument
** Creamos el objecto xmladapter
loXmladapter=Createobject("XMLAdapter")
** Creamos el Objecto dom para validar el xml
loXML=Createobject("MSXML.DOMDocument")
**loXmladapter.ReleaseXML(.T.)
**Solicitamos el archivo XML
lcDataset=Getfile("XML","Seleccione XML a procesar","Abrir",0,"Dataset de
ADO.Net")
If !Empty(lcDataset) And loXML.Load(lcDataset)
** Interpretamos el XML
loXmladapter.LoadXML(lcDataset,.T.,.t.)
Else
=Messagebox("No ha indicado un archivo XML válido",64,"PortalFox")
Return .F.
Endif
** Determinar y examinar las tablas del Dataset
For i = 1 To loXmladapter.Tables.Count && (SIEMPRE ME QUEDA EL Count en
cero)
lcAlias = loXmladapter.Tables.Item(i).Alias
If Used(lcAlias)
Use In (lcAlias)
Endif
*** Establecemos el esquema
If Upper(Alltrim('products')) = Upper(Alltrim(lcAlias)) Or;
Upper(Alltrim('suppliers')) =
Upper(Alltrim(lcAlias))
loXmladapter.Tables(i).Fields(2).DataType = "C"
loXmladapter.Tables(i).Fields(2).MaxLength = 50
Endif
**llevamos la tabla xml a un cursor VFP
loXmladapter.Tables.Item(i).ToCursor()
Select(lcAlias)
Go Top In (lcAlias)
Browse
Next
Gracias.
Gabriel Rodriguez
----------------------------------------------------------------------------
-----------------------
Texto añadido por Panda GP 2012:
Este mensaje NO ha sido clasificado como SPAM. Si se trata de un mensaje de
correo no solicitado (SPAM), haz clic en el siguiente vínculo para
reclasificarlo: ¡Es SPAM!
<http://localhost:6083/Panda?ID=pav_3096&SPAM=true&path=C:\Documents%20and%2
0Settings\usuario\Configuración%20local\Datos%20de%20programa\Panda%20Securi
ty\Panda%20Global%20Protection%202012\AntiSpam>
----------------------------------------------------------------------------
-----------------------
<<image001.gif>>
<<image002.gif>>
<<image003.gif>>
