Leer nodo xml MSXML2.DomDocument

HMG en Español

Moderator: Rathinagiri

martingz
Posts: 402
Joined: Wed Nov 18, 2009 11:14 pm
Location: Mexico

Re: Leer nodo xml MSXML2.DomDocument

Post by martingz »

Javier debe ser algo relacionado con el utf, podrias ser tan amable de enviar el xml para revisarlo a conciencia
mañana te enfvio otra vez el programa completo con su form



saludos
martingz
Posts: 402
Joined: Wed Nov 18, 2009 11:14 pm
Location: Mexico

Re: Leer nodo xml MSXML2.DomDocument

Post by martingz »

Javier usa este codigo

archiv:= "C:\LeerNominaXML\nomina.xml"
hFile:=FOpen(archiv)
nvoarch:=hb_memoread(archiv)
nvoarch:=strtran(nvoarch,"ü","u")
nvoarch:=strtran(nvoarch,"ó","o")
nvoarch:=strtran(nvoarch,"ü","u")
nvoarch:=strtran(nvoarch,"ó","o")
oDocXML := TXmlDocument():New( nvoarch, HBXML_STYLE_NOESCAPE )
nHandle := FCREATE(archiv)
oNodo := oDocXML:FindFirst( "cfdi:Comprobante" )
tipocfd:="cfdi:"
if oNodo == NIL
? "Error: el tipo de XML no es CFDI"
return
endif

la clase Txml no soporta unicode, tienes que quitar los acentos y caracteres especiales, con esas 4 lineas de codigo me lee bien los
xml de nomina

sa;ludos
jparada
Posts: 433
Joined: Fri Jan 23, 2009 5:18 pm

Re: Leer nodo xml MSXML2.DomDocument

Post by jparada »

Hola Martín,

Muchas Gracias, funcionó el ejemplo con el cambio que me indicas, me supongo hay que quitar todas las vocales con acento la u con dieresis y algunos más, correcto?.

Otra pregunta, la forma en como recuperas la cadena original:

Code: Select all

cadenasat := "||" + mversat + "|" + muuid + "|" + mfechatimbr + "|" + mselloimp + "|" + mcersat + "||"
es válido para cfdi factura también?

Saludos,
Javier
martingz
Posts: 402
Joined: Wed Nov 18, 2009 11:14 pm
Location: Mexico

Re: Leer nodo xml MSXML2.DomDocument

Post by martingz »

Asi es Javier hay que hacer esos cambios para los acentos, dieresis, etc, la clase no es unicode

la cadena es para todos los cfdis


Saludos
p.d. quedo pendiente para cualquier comentario
jparada
Posts: 433
Joined: Fri Jan 23, 2009 5:18 pm

Re: Leer nodo xml MSXML2.DomDocument

Post by jparada »

martingz wrote: Wed Jul 20, 2022 1:26 pm Asi es Javier hay que hacer esos cambios para los acentos, dieresis, etc, la clase no es unicode

la cadena es para todos los cfdis
Hola Martín, te agradezco, precisamente estaba buscando el anexo 20, jejeje algunas veces se me olvida que existe la guía :roll:

Saludos,
Javier
jparada
Posts: 433
Joined: Fri Jan 23, 2009 5:18 pm

Re: Leer nodo xml MSXML2.DomDocument

Post by jparada »

Por cierto Martín, referente a mi post comparando las velocidades en la lectura de los xml con Harbour y C# no he podido resolver y también con este método de TXmlDocument realicé la prueba e igual es demasiado lento.

En tu caso cómo se comporta la lectura?, incluso como pruebas quiero ver con funciones de bajo nivel a ver si mejora la velocidad e incluso más allá incluir funciones en C para el parser del xml, sólo que a ese nivel hay que documentarse mucho y no tengo tanto tiempo disponible para ello, esto lo quiero hacer porque de acuerdo a los tiempos que maneja C# es una verdadera locura, en fin una lástima que nadie haya comentado en ese post.

Saludos,
Javier
jparada
Posts: 433
Joined: Fri Jan 23, 2009 5:18 pm

Re: Leer nodo xml MSXML2.DomDocument

Post by jparada »

Y también no se me había ocurrido realizar el test con Excel / VBA , pero ya lo realicé en este momento y el tiempo de consumo sigue siendo mayor que C#, pero muy aceptable leer más de 8000 archivos xml lo realiza en un tiempo de 3 minutos, que de hecho son los tiempos que yo esperaría con Harbour; Incluso sin problema puedo realizar el test con VFP y seguramente serán tiempos similares a los de VBA, en fin...

Saludos,
Javier
jparada
Posts: 433
Joined: Fri Jan 23, 2009 5:18 pm

Re: Leer nodo xml MSXML2.DomDocument

Post by jparada »

Hola,

Pues me estaba volviendo loco tratando de encontrar el por qué de la lentitud al procesar los archivos, estuve un par de semanas o más haciendo pruebas... incluso con otros lenguajes para comparar resultados, hasta que puse la pregunta en el foro de Harbour y cuál fue mi sorpresa que lo que me comentaron es que la salida a pantalla de Harbour es demasiado lenta y va a ser que siiiii :o quitando la línea que imprime a pantalla "procesando archivo n de n", problema resuelto, los tiempos mucho muy diferentes a los que estaba obteniendo, similares como había comentado a VBA, VFP eso si, C# es el rey en la velocidad jejeje.

Ahora en pruebas con la interfaz gráfica también hay resultados interesantes, por ejemplo, leer más de 8000 archivos xml desplegando una barra de progreso y un label "procesando archivo n de n" tarda 45 segundos, en cambio si sólo despliego la barra de progreso sólo tarda 27 segundos.

Quise venir a comentar esto al menos para que quede registro del problema/solución.

Saludos,
Javier
martingz
Posts: 402
Joined: Wed Nov 18, 2009 11:14 pm
Location: Mexico

Re: Leer nodo xml MSXML2.DomDocument

Post by martingz »

javier que buenpo que encontraste el problema, mil disculpas he estado algo ocupado, terminando un programa de nominas en mi trabajo, lo pase todo de dbf a mysql



saludos
Post Reply