Leer y extraer información de archivo XML

504 views
Skip to first unread message

Roberto Matarrita

unread,
Aug 3, 2023, 6:17:41 PM8/3/23
to publicesvfoxpro
Buenas tardes compañeros.

Quiero saber si alguno tiene una rutina para leer y extraer cierta información de un archivo XML. O bien donde podría conseguir una.
Ejemplo, leer una factura, extraer el número de factura, monto, fecha, etc.

Mucho agradecería me pudieran ayudar.

Roberto
Costa Rica.

Juan Gonzalez

unread,
Aug 3, 2023, 6:24:44 PM8/3/23
to publice...@googlegroups.com

--
Blog de la Comunidad Visual FoxPro en Español: http://comunidadvfp.blogspot.com
---
Has recibido este mensaje porque estás suscrito al grupo "Comunidad de Visual Foxpro en Español" de Grupos de Google.
Para cancelar la suscripción a este grupo y dejar de recibir sus mensajes, envía un correo electrónico a publicesvfoxp...@googlegroups.com.
Para ver esta conversación en el sitio web, visita https://groups.google.com/d/msgid/publicesvfoxpro/CA%2B1ujixyKdUWGLRFVpM-dixiTd9iCu1QRMt-UTxB%2BnA5So7yXg%40mail.gmail.com.

Alfonso Ramirez Diaz

unread,
Aug 3, 2023, 10:21:19 PM8/3/23
to Comunidad de Visual Foxpro en Español
Solo carga el archivo o string XML dentro de una variable, puedes usar FILETOSTR() por ejemplo y después la instrucción STREXTRACT() es super sencillo, te doy un ejemplo:

       lcTexto1 = FILETOSTR("miarchivo.xml")

** Acuse de Recibo
IF "<RecepcionEnvio>"$lcTexto1
lcId_acuse = MISTR(Tmensajes.id_mensaje)
lcTipoDTE = STREXTRACT(lcTexto1,"<TipoDTE>","</TipoDTE>")
lcFolio = STREXTRACT(lcTexto1,"<Folio>","</Folio>")
lcEstadoDTE = LEFT(STREXTRACT(lcTexto1,"<EstadoRecepDTE>","</EstadoRecepDTE>"),4)
lcGlosaDTE = LEFT(STREXTRACT(lcTexto1,"<RecepDTEGlosa>","</RecepDTEGlosa>"),50)
ENDIF

En este caso la variable lcTextro1 contiene el código HTML

Hendell Mora

unread,
Aug 3, 2023, 10:24:31 PM8/3/23
to publice...@googlegroups.com
Revisa el último mensaje de zarlu
Con esos archivos yo lo implementé 

jcagu...@gmail.com

unread,
Aug 4, 2023, 9:04:42 AM8/4/23
to Comunidad de Visual Foxpro en Español
algo asi hago para leer una FE , tienes que saber que tags son los que vas a leer
locFileXML = GETFILE('XML', 'Archivo:', 'Abrir', 0, 'Factura Electrónica <XML>')
IF EMPTY(locfilexml)
     RETURN 
ENDIF

THISFORM.TxtCfdXML.Value = locFileXML
lcFileXML = FILETOSTR(THISFORM.TxtCfdXML.Value)
loXml     = CREATEOBJECT('Microsoft.XMLDOM')

IF !loXml.LoadXml(lcFileXML)
   MESSAGEBOX('Sintaxis no Válida en Formato XML en línea:'+ STR(loXml.parseerror.line, 5, 0) +CHR(13 )+ CHR(10) + ALLTRIM(loXml.parseerror.reason) + ALLTRIM(STRTRAN(loXml.parseerror.srctext, CHR(9), '')),48,"")
   THISFORM.TxtCfdXML.Value = ""
   RETURN .F.
ENDIF



THISFORM.TxtFecha.Value = loXml.selectsinglenode("//cbc:IssueDate").text
THISFORM.txtdocumento.Value = loXml.selectsinglenode("//cbc:ID").text
THISFORM.txtresolucion.Value = loXml.selectsinglenode("//sts:InvoiceAuthorization").text
THISFORM.txtcufe.Value = loXml.selectsinglenode("//cbc:UUID").text


Víctor Hugo Espínola Domínguez

unread,
Aug 4, 2023, 10:19:10 AM8/4/23
to publice...@googlegroups.com

almonts ( www.ontariombd.es )

unread,
Aug 4, 2023, 5:28:27 PM8/4/23
to Comunidad de Visual Foxpro en Español
Así es como lo hago yo..

Hendell Mora

unread,
Aug 7, 2023, 4:48:25 PM8/7/23
to publice...@googlegroups.com
Creo que va todo lo que se necesita, cambia la ruta al leer el archivo xml

nfxmlread.FXP
compra.xml
50602062300310149048500100001010000038085128317719.xml
nfXmlRead.prg
comprasxml.SC_T
comprasxml.sc_x

Hendell Mora

unread,
Aug 7, 2023, 5:09:40 PM8/7/23
to publice...@googlegroups.com
Cambiar la ruta al leer el archivo xml, por la ruta donde se guarden los archivos 


Creo que va todo lo que necesita para leer el archivo xml

Hendell Mora
Costa Rica

El vie, 4 ago 2023 a las 15:28, almonts ( www.ontariombd.es ) (<alm...@gmail.com>) escribió:
NFXML.H
nfxpaths.prg
compra.xml
50602062300310149048500100001010000038085128317719.xml
comprasxml.sc_x
comprasxml.SC_T
nfxmlread.FXP
nfXmlRead.prg
nfXmlCreate.PRG
nfXmlReadme.txt

Victor Espina

unread,
Aug 7, 2023, 5:29:07 PM8/7/23
to Comunidad de Visual Foxpro en Español
Puedes probar con mi libreria XMLParser (100% codigo VFP):

Espero te sirva.  Me ayudaria mucho si pudieras enviarme un ejemplo del XML que quieres leer, para ver que mi rutina efectivamente pueda procesarla o si requiere de algun ajuste.


Victor Espina
Reply all
Reply to author
Forward
0 new messages