La cuestión Gabriel, es que el código que te envíe lo empleo en
importaciones XML con “schema”.

He probado a quitarle el esquema y me da el mismo error que a ti…

 

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 21:15
Para: GUFA List Member
Asunto: [GUFA] Leer multiples tablas de un archivo XML

 

Hola Juan,

O sea que a vos te pasa lo mismo, pero solo con el XML de pedidos que yo te
pasé o con cualquiera ?

Es raro porque en la web todos los ejemplos que encuentro dicen que deberia
andar bien?

Saludos

Gabriel Rodriguez  (Buenos Aires - Argentina)

  _____  

From: [email protected]
To: [email protected]
Subject: [GUFA] Leer multiples tablas de un archivo XML
Date: Mon, 14 Jan 2013 20:16:05 +0100

Es cierto Gabriel, marca el error que citas…

Lo he estado probando y no encuentro la causa…

 

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 18:32
Para: GUFA List Member
Asunto: [GUFA] Leer multiples tablas de un archivo XML

 


Hola Juan, 

Gracias por responder.

Acabo de ejecutar tu codigo y al hacer el 

oMyAdapter.Tables..Item(1).ToCursor() 

me muestra el siguiente error : "El indice o la expresion no coinciden con
un miembro existente de la colección"

Por otra parte probe con 3 archivos xml distintos todos del tipo <?xml
version="1.0" encoding="UTF-8"?>

Y para ver si cargo alguna tabla despues de hacer el LoadXML verifico la
propiedad: "oMyAdapter.Tables.Count" entiendo que deberia darme la cantidad
de tablas leidas y me da CERO

Estoy usando la version de VFP 9.0 SP1

Tal vez tenga un error el archivo XML te reproduzco uno de ellos :

<?xml version="1.0" encoding="UTF-8"?>
 <pedidos>
  <pedidoCab>
    <nombre>Francis Albert Sinatra</nombre>
    <nro_ped>0150</nro_ped>
    <fecha>2012-Ol-28</fecha>
    <total>400.50</total>
    <pedidoLin>
      <descrip>Bomba de agua</descrip>
      <cod_rub>030</cod_rub>
      <cod_art>0102</cod_art>
      <precio>250.25</precio>
    </pedidoLin>
    <pedidoLin>
      <descrip>Llave de paso</descrip>
      <cod_rub>042</cod_rub>
      <cod_art>0344</cod_art>
      <precio>150.25</precio>
    </pedidoLin>
  </pedidoCab>
  <pedidoCab>
    <nombre>Gen Kelly</nombre>
    <nro_ped>0151</nro_ped>
    <fecha>2012-Ol-28</fecha>
    <total>500.00</total>
    <pedidoLin>
      <descrip>Plancha elevadora</descrip>
      <cod_rub>030</cod_rub>
      <cod_art>0752</cod_art>
      <precio>300.00</precio>
    </pedidoLin>
    <pedidoLin>
      <descrip>Horno de coccion</descrip>
      <cod_rub>044</cod_rub>
      <cod_art>0147</cod_art>
      <precio>200.00</precio>
    </pedidoLin>
  </pedidoCab>
 </pedidos>

Saludos

Gabriel Rodriguez  (Buenos Aires - Argentina)

 

  _____  

From: [email protected]
To: [email protected]
Subject: [GUFA] Leer multiples tablas de un archivo XML
Date: Mon, 14 Jan 2013 17:17:54 +0100

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.gif
<http://image001.gif%4001CDF293.FB954330> 952 282 280

 Descripción: C:\SOFT\Firma_archivos\image002.gif
<http://image002.gif%4001CDF293.FB954330> 687 819 699

 Descripción: C:\SOFT\Firma_archivos\image003.gif
<http://image003.gif%4001CDF293.FB954330> [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_3104&SPAM=true&path=C:%20%20%20%20Docum
entsand%20%20%20%20%20%20%20%20%20%20%20Èettings%20%20%20%20Dusuario%20%20%2
0%208Configuraci·3b3n%20%20%20%20%20%20%20%20%20%20%20%20%20%20%2064220cal%2
0%20%20%20øDatos%20%20%20%20%20%20%20%20%20%20%20131112977e%20%20%20%20%20%2
0%20%20%20%20%20%2007D03D38rograma%20%20%20%20%0d%0aPandaecurity%20%20%20%20
-Panda%20%20%20%20%20%20%20%204.47594E-091lobalProtection%5cAntiSpam> 
----------------------------------------------------------------------------
---------

----------------------------------------------------------------------------
-----------------------
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_3107&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>>

Responder a