FiveTech Support Forums

FiveWin / Harbour / xBase community
Board index FiveWin para Harbour/xHarbour Error al leer XML
Posts: 198
Joined: Fri Nov 18, 2005 07:34 PM
Error al leer XML
Posted: Wed Jun 10, 2015 09:01 PM

Hola, estoy tratando de leer un XML de la siguiente forma:

hFile := FOpen(Archivo2)
oXmlDoc := TXmlDocument():New( hFile )
oXmlIter := TXmlIterator():New( oXmlDoc:oRoot )
oDatos:Blank()
aDatos := {}

DO WHILE .T.
oTagActual = oXmlIter:Next()
If oTagActual != nil
HEval( oTagActual:aAttributes, { | cKey, cValue | Guarda_XML_Valores( oDatos, cKey, cValue,oTagActual:cName ) } )
Else
Exit
Endif
ENDDO

Pasa lo siguiente:
Si el XML inicia como a continuacion, lee correctamente los nodos sin ningun problema
<?xml version="1.0" encoding="UTF-8"?>
-<cfdi:Comprobante version="3.2" Moneda="MXN" LugarExpedicion="VERACRUZ, Veracruz" tipoDeComprobante="ingreso" folio="2358" serie="E" total="340.11" subTotal="293.20" fecha="2015-06-10T10:24:57" sello="ooFtoRbvp1hmyYQVYoTP9JfV8LpIemtFhB//PIlFD24hBUuuq3vs0FaV3xVnKVZ12/BveajQa75nUa7PCHrG8umf+T2yj0A0UIHzcBboT0M6w7Y1rc7tO8NmZvankHK93ZOXnajYMWwnXadAY9tvciY3SSgAXaSYtVdP0q92B18=" certificado="MIIEoDCCA4igAwIBAgIUMDAwMDEwMDAwMDAyMDAwODQ0ODAwDQYJKoZIhvcNAQEFBQAwggGVMTgwNgYDVQQDDC9BLkMuIGRlbCBTZXJ2aWNpbyBkZSBBZG1pbmlzdHJhY2nDs24gVHJpYnV0YXJpYTEvMC0GA1UECgwmU2VydmljaW8gZGUgQWRtaW5pc3RyYWNpw7NuIFRyaWJ1dGFyaWExODA2BgNVBAsML0FkbWluaXN0cmFjacOzbiBkZSBTZWd1cmlkYWQgZGUgbGEgSW5mb3JtYWNpw7NuMSEwHwYJKoZIhvcNAQkBFhJhc2lzbmV0QHNhdC5nb2IubXgxJjAkBgNVBAkMHUF2LiBIaWRhbGdvIDc3LCBDb2wuIEd1ZXJyZXJvMQ4wDAYDVQQRDAUwNjMwMDELMAkGA1UEBhMCTVgxGTAXBgNVBAgMEERpc3RyaXRvIEZlZGVyYWwxFDASBgNVBAcMC0N1YXVodMOpbW9jMRUwEwYDVQQtEwxTQVQ5NzA3MDFOTjMxPjA8BgkqhkiG9w0BCQIML1Jlc3BvbnNhYmxlOiBDZWNpbGlhIEd1aWxsZXJtaW5hIEdhcmPDrWEgR3VlcnJhMB4XDTEyMDExMzIzMzU0MFoXDTE2MDExMzIzMzU0MFowgeExKzApBgNVBAMTIkdSVVBPIEVNUFJFU0FSSUFMIFRFTk9SSU8gU0EgREUgQ1YxKzApBgNVBCkTIkdSVVBPIEVNUFJFU0FSSUFMIFRFTk9SSU8gU0EgREUgQ1YxKzApBgNVBAoTIkdSVVBPIEVNUFJFU0FSSUFMIFRFTk9SSU8gU0EgREUgQ1YxJTAjBgNVBC0THEdFVDk0MDIwMlNVQSAvIFRFT0o1NjAxMDIyQzYxHjAcBgNVBAUTFSAvIFRFT0o1NjAxMDJIUExOTFMwMDERMA8GA1UECxMIU1VDVVJTQUwwgZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJAoGBAMOlV2i0ys57/sWHvfl6Gtei45aZUc4bq212ylC+U/HLNPwPXGuF7GHP2UlEtul5s18NzWYQGVTeopTI6xHrWpprZ77FYMKEtZ/ULKAjY6+ALjXlvJZgTHh9LNv4chgfwNVGSaumwBAfCz1qEMPVJkUhH8stqL0A72P0JNmFVp/1AgMBAAGjHTAbMAwGA1UdEwEB/wQCMAAwCwYDVR0PBAQDAgbAMA0GCSqGSIb3DQEBBQUAA4IBAQBxRi9A5lPqEdqyv1k5poGlB5Qy8HgcAZnRwXdmtGHIR+Pk0gfe/bXimQoFYRg90KmAqJH1tQYnwOf/pUFudKoCjjGpwEGOVqibEUFXhZKwpCNDVe/pAxbXy6YtOJE+9qIMXMF5SPYalWGYpSubSE+xZIQ8vSMoqcycyB/TH9Pfg/8C3NI7VQTStcSmNM6YShQqh0r/hvgpMR1G/DFakY2o2XD7pIWHmTe5ZgltTk3sWtTN6XEaVk/9Oe6THTL7GfRxBZCmB1z/2fdfcMe3CSBeH1XG9OApGZ2+FfFaeeMJifo9LwHIcLe+1PZ5pWUyVYnwh5igAjA+3zvrXJmI8Aug" formaDePago="PAGO EN UNA SOLA EXHIBICION" metodoDePago="EFECTIVO" noCertificado="00001000000200084480" xsi:schemaLocation="http://www.sat.gob.mx/cfd/3 http://www.sat.gob.mx/sitio_internet/cfd/3/cfdv32.xsd " xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:cfdi="http://www.sat.gob.mx/cfd/3">

Pero si inicia asi, ya no hace la "Evaluacion" y se sale del Do WHile
<?xml version="1.0" encoding="UTF-8"?>
-<cfdi:Comprobante xmlns:cfdi="http://www.sat.gob.mx/cfd/3" xsi:schemaLocation="http://www.sat.gob.mx/cfd/3 http://www.sat.gob.mx/sitio_internet/cfd/3/cfdv32.xsd" LugarExpedicion="Veracruz, Veracruz" metodoDePago="No identificado" tipoDeComprobante="ingreso" total="506.00" Moneda="MXN" subTotal="506.00" certificado="MIIEbzCCA1egAwIBAgIUMDAwMDEwMDAwMDAzMDAyNzA4MjQwDQYJKoZIhvcNAQEFBQAwggGKMTgwNgYDVQQDDC9BLkMuIGRlbCBTZXJ2aWNpbyBkZSBBZG1pbmlzdHJhY2nDs24gVHJpYnV0YXJpYTEvMC0GA1UECgwmU2VydmljaW8gZGUgQWRtaW5pc3RyYWNpw7NuIFRyaWJ1dGFyaWExODA2BgNVBAsML0FkbWluaXN0cmFjacOzbiBkZSBTZWd1cmlkYWQgZGUgbGEgSW5mb3JtYWNpw7NuMR8wHQYJKoZIhvcNAQkBFhBhY29kc0BzYXQuZ29iLm14MSYwJAYDVQQJDB1Bdi4gSGlkYWxnbyA3NywgQ29sLiBHdWVycmVybzEOMAwGA1UEEQwFMDYzMDAxCzAJBgNVBAYTAk1YMRkwFwYDVQQIDBBEaXN0cml0byBGZWRlcmFsMRQwEgYDVQQHDAtDdWF1aHTDqW1vYzEVMBMGA1UELRMMU0FUOTcwNzAxTk4zMTUwMwYJKoZIhvcNAQkCDCZSZXNwb25zYWJsZTogQ2xhdWRpYSBDb3ZhcnJ1YmlhcyBPY2hvYTAeFw0xMzA2MDcxODMzMzlaFw0xNzA2MDcxODMzMzlaMIG7MSUwIwYDVQQDExxKVUFOIE5PRSBST0RSSUdVRVogUk9EUklHVUVaMSUwIwYDVQQpExxKVUFOIE5PRSBST0RSSUdVRVogUk9EUklHVUVaMSUwIwYDVQQKExxKVUFOIE5PRSBST0RSSUdVRVogUk9EUklHVUVaMRYwFAYDVQQtEw1ST1JKNjYwNzA1VUYzMRswGQYDVQQFExJST1JKNjYwNzA1SFZaREROMDIxDzANBgNVBAsTBlVOSURBRDCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEAylt4qZqvjhegw/NumPf2UmDfhzncpmdNBIzEFPYXzSI4szum3cNXDz0BwC1sLFETUQVxgXG8iQ/bWEDsmDYSKfYiYDrDWOK/Z8CCkhqO/VaCMNn+1XJ0YPppaU7OcpecMdZZQWi+kZuxVhhOjlcAjYk37g4+IQ+7l4NQHzO5EUMCAwEAAaMdMBswDAYDVR0TAQH/BAIwADALBgNVHQ8EBAMCBsAwDQYJKoZIhvcNAQEFBQADggEBAGnN9uG+ZeQXmDvcK2AVslxOZdGNxBhehWrK5WVjNUBUSQeRJoiUc7CqSnDaO7NV1sj4P1gGCnu3zncrEnQ7NACh7xgPvDXz5veedo5zX6Z9z2n/p+oG3B/gfcZpH+6Ef6+3JcZiwSe+6V5QZcxXnQXaCwstMTPwhWNgJ1fvkxlqibEiDKYQvaYtEJU1H9bDLeYlUUUkCSuqEeLtpiV9mXfp1HtCQz1XD73LuTk5nAV5uYfZBMm39ZXyp3vIN/Lq2ZWZ6DgGMnw8+xJLDUKnexLObScnc3mcv98vfurTSS9zQxY55azpfxODjEyMwpBwvALUE5n45tExjKcBZayw4mI=" noCertificado="00001000000300270824" formaDePago="Pago en una sola exhibición" sello="G+g8VpJ1315ILKap44kCM2b/4FttW90lODvKzduTb6KpVRgmhZdvAJyufkBo6eiEE8/VCnQ8nIfEVQqJsrPkWtb7UgBIrMtHmkBIk+lY/TVQ0X3/Wbt9QQIEK/6hiuPsO9+I493efXzzl5qTF8QJ5h5RC1USVu1gUdJfTIeDtJQ=" fecha="2015-06-10T09:54:47" folio="18027" version="3.2" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">-<cfdi:Emisor nombre="Juan Noé Rodríguez Rodríguez" rfc="RORJ660705UF3">

Donde puedo revisar que lo causa ?, o a que se debe ?, simplemente no avanza los tags, y se sale.

gracias por su ayuda

Posts: 198
Joined: Fri Nov 18, 2005 07:34 PM
Re: Error al leer XML
Posted: Thu Jun 11, 2015 02:57 AM

He estado haciendo muchas pruebas y no he podido hacer que lea ese tipo de XML, lo que veo diferente es que la primera línea no contiene nodos y hace que salga del ciclo, como puedo sacar los datos ?, alguna idea de que es lo que pasa ?

gracias

Posts: 44158
Joined: Thu Oct 06, 2005 05:47 PM
Re: Error al leer XML
Posted: Thu Jun 11, 2015 09:01 AM

Revisa los ejemplos FWH\samples\xmlreader.prg y xmltree.prg

regards, saludos

Antonio Linares
www.fivetechsoft.com
Posts: 198
Joined: Fri Nov 18, 2005 07:34 PM
Re: Error al leer XML
Posted: Thu Jun 11, 2015 03:59 PM

Gracias por contestar, ya hice pruebas y leo la gran mayoria de XML (Facturas electronicas de México, pero este tipo de XML no, se sale del ciclo Do While como si ya no encontrara nada, puede ser las clases que uso esten viejas ?
donde puedo conseguirlas ?.

Si el XML empieza asi o parecido lo leo correctamente
<?xml version="1.0" encoding="UTF-8"?>
+<cfdi:Comprobante version="3.2" Moneda="MXN" LugarExpedicion="VERACRUZ, Veracruz" tipoDeComprobante="ingreso" folio="2358" serie="E" total="340.11" subTotal="293.20" fecha="2015-06-10T10:24:57"

Si el XML empieza asi se sale del ciclo:
<?xml version="1.0" encoding="UTF-8"?>
+<cfdi:Comprobante xmlns:cfdi="http://www.sat.gob.mx/cfd/3" xsi:schemaLocation="http://www.sat.gob.mx/cfd/3 http://www.sat.gob.mx/sitio_internet/cfd/3/cfdv32.xsd" LugarExpedicion="Veracruz, Veracruz" metodoDePago="No identificado" tipoDeComprobante="ingreso" total="506.00" Moneda="MXN" subTotal="506.00"

hFile := FOpen(Archivo2)
oXmlDoc := TXmlDocument():New( hFile )
oXmlIter := TXmlIterator():New( oXmlDoc:oRoot )

oDatos:Blank()
aDatos := {}

oXmlNode := oXmlDoc:FindFirst( "Header" )

DO WHILE .T.
oTagActual = oXmlIter:Next()
If oTagActual != nil
cTagName:= oTagActual:cName
cTagData:= oTagActual:cData
HEval( oTagActual:aAttributes, { | cKey, cValue | Guarda_XML_Valores( oDatos, cKey, cValue, oTagActual:cName ) } )
Else
* Exit ///AQUI SE SALE Y YA NO CONTINUA ANALIZANDO
Endif
ENDDO

Gracias por su ayuda, saludos

Posts: 582
Joined: Fri Oct 07, 2005 02:17 PM
Re: Error al leer XML
Posted: Fri Jun 12, 2015 06:59 AM

Saludos

Yo le pondria un PRINT al oTagActual despues de que le cargo el valor del Tag, da la impresion de que esta pasandole un NIL y por lo menos sabrias si lee el primer Tag o no lee nada

Enrrique Vertiz Pitta

Lima-Peru

xHb 1.23.1026X, Fwh 25.01, BCC74, MySQL 8.0.X, SQLLIB 1.9m

Continue the discussion