Trabajar con xml

182 views
Skip to first unread message

Idalberto Gonzalez

unread,
Feb 20, 2020, 9:04:18 PM2/20/20
to Comunidad de Visual Foxpro en Español
Hola.
La verdad es que nunca he trabajado con un archivo xml, no tengo experiencia en este tema y me veo en la necesidad de obtener información de una pagina web. El codigo que pone la institución en su pagina web para realizar esta labor es el siguiente:

POST /wsMovilDGII/WSMovilDGII.asmx HTTP/1.1
Host: dgii.gov.do
Content-Type: text/xml; charset=utf-8
Content-Length: length
SOAPAction: "http://dgii.gov.do/GetNCF2"

<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
  <soap:Body>
    <GetNCF2 xmlns="http://dgii.gov.do/">
      <RNC>string</RNC>
      <NCF>string</NCF>
      <rncComprador>string</rncComprador>
      <codSeguridad>string</codSeguridad>
      <IMEI>string</IMEI>
    </GetNCF2>
  </soap:Body>
</soap:Envelope>
http://dgii.gov.do/GetNCF2

Por favor, alguien me puede orientar de como trabajo con este código para obtener los valores deseados?.
Agradezco de antemano cualquier ayuda ofrecida. Muchas gracias.

Jose María Martín

unread,
Feb 21, 2020, 6:31:47 AM2/21/20
to Comunidad de Visual Foxpro en Español
Hola, 
Marco Plaza hizo un parser para xml, te dejo un enlace (en inglés) del foro de foxite donde lo explica y adjunta el prg (el enlace al adjunto aun funciona, lo he comprobado)


Un saludo

Edwin Duran

unread,
Feb 21, 2020, 7:30:21 AM2/21/20
to Comunidad de Visual Foxpro en Español
Buen día
Te envié un coreo privado.

Aldo Dario Ghione Ferret

unread,
Feb 21, 2020, 8:57:52 AM2/21/20
to publice...@googlegroups.com
Saludos.  Este error es muy común.

Lo que significa es que lo que estas enviando no tiene ningún sentido para el servidor o el lugar en donde lo estas trasmitiendo no se encuentra. Hay un error en el www.xxxx.com  por ejemplo.




De: publice...@googlegroups.com <publice...@googlegroups.com> en nombre de Edwin Duran <edwinn...@gmail.com>
Enviado: viernes, 21 de febrero de 2020 06:30
Para: Comunidad de Visual Foxpro en Español <publice...@googlegroups.com>
Asunto: [vfp] Re: Trabajar con xml
 
--
Visita el 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/c286153f-516d-4e0d-afa4-3e8e33d84346%40googlegroups.com.

Jose Daniel Camilo Ruiz

unread,
Feb 21, 2020, 2:28:47 PM2/21/20
to Comunidad de Visual Foxpro en Español
por lo que veo eres de república dominicana, 

en ese caso esto es para buscar la cedula en el caso de los ncf es casi igual

   IF !EMPTY(This.Value)
      Wrnc = ALLTRIM(This.Value)
      TEXT TO sXMLRequest  NOSHOW TEXT PRETEXT 7
           <soap:Envelope xmlns:soap="http://www.w3.org/2003/05/soap-envelope" xmlns:dgii="http://dgii.gov.do/">
                <soap:Header/>
                <soap:Body>
                     <dgii:GetContribuyentes>
                          <dgii:value><<Wrnc>></dgii:value>
                          <dgii:patronBusqueda>0</dgii:patronBusqueda>
                          <dgii:inicioFilas>0</dgii:inicioFilas>
                          <dgii:filaFilas>0</dgii:filaFilas>
                          <dgii:IMEI>?</dgii:IMEI>
                     </dgii:GetContribuyentes>
                </soap:Body>
           </soap:Envelope>
      ENDTEXT 
             
      TRY     
         oHTTP = CREATEOBJECT('Msxml2.ServerXMLHTTP.6.0')
         oHTTP.OPEN("POST","http://dgii.gov.do/wsMovilDGII/WSMovilDGII.asmx", .F.)
         oHTTP.setRequestHeader("Content-Type", "text/xml; charset=utf-8")
         oHTTP.setRequestHeader("Content-Length",STR(LEN(sXMLRequest)))
         oHTTP.setRequestHeader("SOAPAction","http://dgii.gov.do/GetContribuyentes")
         oHTTP.SEND(sXMLRequest)
         sRespuestaWS =  SUBSTR(oHTTP.responseText,AT(Wrnc,oHTTP.responseText),250)
         sRespuestaWS = SUBSTR(sRespuestaWS,AT('RGE_NOMBRE',sRespuestaWS)+13,100)
         
         IF !EMPTY(ALLTRIM(SUBSTR(sRespuestaWS,1,AT('NOMBRE_COMERCIAL',sRespuestaWS)-4)))
            Thisform.TxTNombre.Value= SUBSTR(sRespuestaWS,1,AT('NOMBRE_COMERCIAL',sRespuestaWS)-4)
         EndIf   
         IF !EMPTY(Thisform.TxTNombre.Value)
            IF EMPTY(Thisform.TxtClientes.Value)
               Thisform.TxtClientes.Value=Wrnc       
            ENDIF
         ELSE
            WAIT windows "Cliente no existe en la base de datos de la DGII"  NoWait
         ENDIF         
      CATCH TO loErr
         WAIT Windows "Error: " + TRANSFORM(loErr.ErrorNo) +  " Mensaje: " + loErr.Message NoWait
      ENDTRY 


esto te dara una idea


El jueves, 20 de febrero de 2020, 22:04:18 (UTC-4), Idalberto Gonzalez escribió:
Message has been deleted

Idalberto Gonzalez

unread,
Feb 23, 2020, 3:52:37 PM2/23/20
to Comunidad de Visual Foxpro en Español
Gracias a todos por su ayuda.
José Daniel, Muchas gracias, precisamente esa es la orientación que necesitaba.
Saludos,


El jueves, 20 de febrero de 2020, 22:04:18 (UTC-4), Idalberto Gonzalez escribió:
Reply all
Reply to author
Forward
0 new messages