Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   OOP (https://www.clubdelphi.com/foros/forumdisplay.php?f=5)
-   -   Leer Datos De Xml (https://www.clubdelphi.com/foros/showthread.php?t=96725)

mRoman 31-05-2024 23:20:43

Leer Datos De Xml
 
Hola amigos.

Hace algun tiempo inicié un hilo con el mismo tema (creo recordar), el tema -obviamente- no lo domino PERO NADA!, asi que cualquier error no sé como se resuelvoría. Bueno lo traigo de nuevo porque -ahora si- el cliente la va necesitar para REPROCESAR esa información en otros reportes.

Se trata de LEER un archivo XML y extraer datos, como: RFC RECEPTOR y EL DETALLE DE LA FACTURA

He consultado páginas, hilos y videos tutoriales:

Explicación de Neftali
https://neftali.clubdelphi.com/carga...r-a-los-datos/
No lo pude llevar acabo porque hay un campo con el detalle -quiero pensar q es eso- pero cuando yo lo hago con mi archivo, pues algo como eso a mi no me sale....entonces no sé que haría falta, talvez el XML de él tiene ciertas condiciones que detarminar q se debe generar el detalle en ese campo...no lo sé.

Video
https://www.youtube.com/watch?v=4D78MG4CaAI
en este video no lo puedo llevar acabo porque no llegó a compilar

ChatGPT (Por lo menos con esto obtengo el RFC del cliente a quien se le facturó)
Código Delphi [-]
uses
  Xml.XMLDoc, Xml.XMLIntf;

procedure LeerDatosXML(const FileName: string);
var
  XMLDoc: IXMLDocument;
  NodeComprobante, NodeEmisor, NodeReceptor: IXMLNode;
begin
  XMLDoc := TXMLDocument.Create(nil);
  try
    XMLDoc.LoadFromFile(FileName);
    XMLDoc.Active := True;

    // Acceder al nodo principal 
    NodeComprobante := XMLDoc.DocumentElement;

    // Verificar si el nodo principal existe
    if Assigned(NodeComprobante) then
    begin
      // Acceder a los atributos del nodo principal 
      Writeln('Serie: ', NodeComprobante.Attributes['Serie']);
      Writeln('Folio: ', NodeComprobante.Attributes['Folio']);
      Writeln('Fecha: ', NodeComprobante.Attributes['Fecha']);

      // Acceder a los nodos hijos  y 
      NodeEmisor := NodeComprobante.ChildNodes.FindNode('cfdi:Emisor');
      NodeReceptor := NodeComprobante.ChildNodes.FindNode('cfdi:Receptor');

      // Verificar si los nodos hijos existen
      if Assigned(NodeEmisor) and Assigned(NodeReceptor) then
      begin
        // Acceder a los atributos de  y 
        Writeln('Emisor RFC: ', NodeEmisor.Attributes['Rfc']);
        Writeln('Emisor Nombre: ', NodeEmisor.Attributes['Nombre']);
        Writeln('Receptor RFC: ', NodeReceptor.Attributes['Rfc']);
        Writeln('Receptor Nombre: ', NodeReceptor.Attributes['Nombre']);
      end;
    end;
  finally
    XMLDoc := nil;
  end;
end;

Otro video tutorial
https://www.youtube.com/watch?v=5QXf5zyGRi8

He usado XML Mapper que viene en la explicación de Neftalí, pero no logro ver el detalle de la factura "cfdi:Concepto"


Asi que, como le hago para obtener el detalle de la factura???. Interesa obtener esta sección:

Código:

<cfdi:Conceptos>
        <cfdi:Concepto ClaveProdServ="50131700" NoIdentificacion="1546" Cantidad="1485.000000" ClaveUnidad="H87" Unidad="PZA"
        Descripcion="LECHE SEMIDESCREMADA UHT PLUS SABOR FRESA" ValorUnitario="5.550000" Importe="8241.75" ObjetoImp="02">
                <cfdi:Impuestos>
                        <cfdi:Traslados>
                                <cfdi:Traslado Base="8241.75" Impuesto="002" TipoFactor="Tasa" TasaOCuota="0.000000" Importe="0.00"/>
                        </cfdi:Traslados>
                </cfdi:Impuestos>
        </cfdi:Concepto>
        <cfdi:Concepto ClaveProdServ="50131700" NoIdentificacion="1547" Cantidad="540.000000" ClaveUnidad="H87" Unidad="PZA"
        Descripcion="LECHE SEMIDESCREMADA UHT PLUS SABOR VAINILLA" ValorUnitario="5.550000" Importe="2997.00" ObjetoImp="02">
                <cfdi:Impuestos>
                        <cfdi:Traslados>
                                <cfdi:Traslado Base="2997.00" Impuesto="002" TipoFactor="Tasa" TasaOCuota="0.000000" Importe="0.00"/>
                        </cfdi:Traslados>
                </cfdi:Impuestos>
        </cfdi:Concepto>
</cfdi:Conceptos>

Le paso el archivo XML (completo) para mayor referencia.

Cita:

<cfdi:Comprobante xmlns:cfdi="http://www.sat.gob.mx/cfd/4" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.sat.gob.mx/cfd/4 http://www.sat.gob.mx/sitio_internet/cfd/4/cfdv40.xsd" Version="4.0" Serie="NAY" Folio="50642" Fecha="2024-05-30T09:36:30" Sello="cRYzUP+XAg/cbjUf15ox/7wr8ngtInlUlQh4S6kqbfG09CZ7OvdrTREuoe7ye0RaOXSYJKOAidj2WoTCAti8ERHnB8eYUYMGGPA5iG8QfXYus1fm3ghjZOU8w WSI58sjgFQJ4CqReeRv7RfVCwFZB65rc2po3FVPYiRwH48zLJeuCk1ZD7NyTEguwnJgbIiMOGG+Wo00ff1ZXI29Uv3s8tB4v3NiK bx5aA13U8aAmhbXNfgTLO5flWuNUUanSycGnan98EbYFf1yXetgjqOkCTr3oCurqFmKKVWUrFydgjc5HpTZDAbgbab7V8x9PgTRq iboG+OBqy4rpGAQxnlsrQ==" FormaPago="99" NoCertificado="00001000000505378200" Certificado="MIIF4DCCA8igAwIBAgIUMDAwMDEwMDAwMDA1MDUzNzgyMDAwDQYJKoZIhvcNAQELBQAwggGEMSAwHgYDVQQDDBd BVVRPUklEQUQgQ0VSVElGSUNBRE9SQTEuMCwGA1UECgwlU0VSVklDSU8gREUgQURNSU5JU1RSQUNJT04gVFJJQlVUQVJJQTEaMBg GA1UECwwRU0FULUlFUyBBdXRob3JpdHkxKjAoBgkqhkiG9w0BCQEWG2NvbnRhY3RvLnRlY25pY29Ac2F0LmdvYi5teDEmMCQGA1U ECQwdQVYuIEhJREFMR08gNzcsIENPTC4gR1VFUlJFUk8xDjAMBgNVBBEMBTA2MzAwMQswCQYDVQQGEwJNWDEZMBcGA1UECAwQQ0l VREFEIERFIE1FWElDTzETMBEGA1UEBwwKQ1VBVUhURU1PQzEVMBMGA1UELRMMU0FUOTcwNzAxTk4zMVwwWgYJKoZIhvcNAQkCE01 yZXNwb25zYWJsZTogQURNSU5JU1RSQUNJT04gQ0VOVFJBTCBERSBTRVJWSUNJT1MgVFJJQlVUQVJJT1MgQUwgQ09OVFJJQlVZRU5 URTAeFw0yMDEwMTQxNTE2MTNaFw0yNDEwMTQxNTE2MTNaMIGuMRkwFwYDVQQDExBMSUNPTlNBIFNBIERFIENWMRkwFwYDVQQpExB MSUNPTlNBIFNBIERFIENWMRkwFwYDVQQKExBMSUNPTlNBIFNBIERFIENWMSUwIwYDVQQtExxMSUM5NTA4MjFNODQgLyBHQVNSNTM xMTIxQzU5MR4wHAYDVQQFExUgLyBHQVNSNTMxMTIxSERGVkdOMDcxFDASBgNVBAsTC0NTRCBMSUNPTlNBMIIBIjANBgkqhkiG9w0 BAQEFAAOCAQ8AMIIBCgKCAQEAyeuiEt2V1XvJlBrGtBh7OVuvevGh8X7B+eT/GWuAtZipSjzF/XtEWAdbSgQ1cxHFKTokz7pFsLSHq1P71NUnzkJRJGrZLgmNdOlJpuCCS1EXrUM/fYgh6KdbFgq+9uh4W1XzbJMphQYPAnBxhQsobub4m7hEP7O8pdYtqkgJGFbzyACJCIXfmOn3m1t0tBcELVp+LXlQBQU8UmKWbYbd g4L3mXUavQSvRwV1P7nO+5xQZ9Pj0d9NEOoEoAaQI94wv3MWfi/3BKRFaRWg+0ycphb4bEXzeo7AKgefeL+RCKVo67pxoXgxfkPU1OQGp9r9oXVZ57O89iy80hWoRICtrQIDAQABox0wGzAMBgNVHRM BAf8EAjAAMAsGA1UdDwQEAwIGwDANBgkqhkiG9w0BAQsFAAOCAgEARqLQc9wqRV2WT/xVmrjRVl2BW1DvV/NQZ/WwmSzD1kRupn83wFqOum0ZTLjwH7oCh+Kbt7hs+/D8H4OC9MwzBzOK5ShISmaYZ7TxsVOW9wVmdp6rkrOsBmbhVpAs2fn7Tod6MfofcE4JaLyl0bsQigoM4bcDVuA2Vm/ifo2cfRWmWKaasIQ9s++nod1LbrtE9gIU3M2OIuDIoDvYbpNCXa9UUmyflqfsVoGrkwH+Z85h0FD2zVmKhpmjuQqThOQ2C4psO45 d7zmho1PYvx5ScLp99J5LeRUemIIgL9FsNl5/H+2WmrWEocH482hxQKjpVM0KeygrGZN002/CIrZ2VwtkWgbjF4kRHkOcaaBGajn1gyvpVwLiki1NmZA15tOwUjoZUFts6ndKrVJgMg2AiTRvbYPkH+7KPltAYAa4M+xESGQLI1T 04p2ZJuhWMSi1asMZNxCaLNjq7nBDWkU0Y7+j8v4EujXTWSj5MUvASzVMsRdE3RNF/guDd/jzcnIwZ2ry5Y612iMqUUO2qvpkQJy7YyHDpC01aMMzTldyqa8Dj9+aafKvZg7L1k5R/SmlRW8zRgL8sNl+L0WBon4+dWgTu7DwW5PSsKWdkdKlp1Ed5iEOTlDwrhfvoVpPtyTPCMLjqXsoQL3sHAE4QngtlRdleGzHB+0XR EEikwDA7X4=" CondicionesDePago="8 DIAS DESPUES DE LA PRESENTACION DE LA FACTURA" SubTotal="11238.75" Moneda="MXN" Total="11238.75" TipoDeComprobante="I" Exportacion="01" MetodoPago="PPD" LugarExpedicion="63195">
<cfdi:Emisor Rfc="CIL999999a9a" Nombre="CILINDRO" RegimenFiscal="601"/>
<cfdi:Receptor Rfc="CID999999a9a" Nombre="CID" DomicilioFiscalReceptor="14020" RegimenFiscalReceptor="601" UsoCFDI="G01"/>
<cfdi:Conceptos>
<cfdi:Concepto ClaveProdServ="50131700" NoIdentificacion="1546" Cantidad="1485.000000" ClaveUnidad="H87" Unidad="PZA" Descripcion="LECHE SEMIDESCREMADA UHT PLUS SABOR FRESA" ValorUnitario="5.550000" Importe="8241.75" ObjetoImp="02">
<cfdi:Impuestos>
<cfdi:Traslados>
<cfdi:Traslado Base="8241.75" Impuesto="002" TipoFactor="Tasa" TasaOCuota="0.000000" Importe="0.00"/>
</cfdi:Traslados>
</cfdi:Impuestos>
</cfdi:Concepto>
<cfdi:Concepto ClaveProdServ="50131700" NoIdentificacion="1547" Cantidad="540.000000" ClaveUnidad="H87" Unidad="PZA" Descripcion="LECHE SEMIDESCREMADA UHT PLUS SABOR VAINILLA" ValorUnitario="5.550000" Importe="2997.00" ObjetoImp="02">
<cfdi:Impuestos>
<cfdi:Traslados>
<cfdi:Traslado Base="2997.00" Impuesto="002" TipoFactor="Tasa" TasaOCuota="0.000000" Importe="0.00"/>
</cfdi:Traslados>
</cfdi:Impuestos>
</cfdi:Concepto>
</cfdi:Conceptos>
<cfdi:Impuestos TotalImpuestosTrasladados="0.00">
<cfdi:Traslados>
<cfdi:Traslado Base="11238.75" Impuesto="002" TipoFactor="Tasa" TasaOCuota="0.000000" Importe="0.00"/>
</cfdi:Traslados>
</cfdi:Impuestos>
<cfdi:Complemento>
<tfd:TimbreFiscalDigital xmlns:tfd="http://www.sat.gob.mx/TimbreFiscalDigital" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.sat.gob.mx/TimbreFiscalDigital http://www.sat.gob.mx/sitio_internet/cfd/TimbreFiscalDigital/TimbreFiscalDigitalv11.xsd" Version="1.1" UUID="66c97813-65c3-4eb2-9d4b-ab5efa69e025" FechaTimbrado="2024-05-30T10:51:04" RfcProvCertif="LSO1306189R5" SelloCFD="cRYzUP+XAg/cbjUf15ox/7wr8ngtInlUlQh4S6kqbfG09CZ7OvdrTREuoe7ye0RaOXSYJKOAidj2WoTCAti8ERHnB8eYUYMGGPA5iG8QfXYus1fm3ghjZOU8w WSI58sjgFQJ4CqReeRv7RfVCwFZB65rc2po3FVPYiRwH48zLJeuCk1ZD7NyTEguwnJgbIiMOGG+Wo00ff1ZXI29Uv3s8tB4v3NiK bx5aA13U8aAmhbXNfgTLO5flWuNUUanSycGnan98EbYFf1yXetgjqOkCTr3oCurqFmKKVWUrFydgjc5HpTZDAbgbab7V8x9PgTRq iboG+OBqy4rpGAQxnlsrQ==" NoCertificadoSAT="00001000000509846663" SelloSAT="RMOvjcfp8Iuv4kKkPRffvauaEn5Q81TCHYCsamguTYhSbHMppd7IeBzfZOhipT4is1snmJCOG6DHF2EYOFQ5NG+vzs q6wday6z++Jb5tzjKyyhlSPN0AQNf+yWGFXbfVp4nEkT03/wOBx4EK0+PEx7deIx9grqYLynSkV1JBLg9ol2uMZ3Zv18AKAh7ADCWTxjo1/m6NVK7WW6B3uRvsFTyxTtsRwRT2Qdtw+JzvZvSHib70EiHZ9Ioz0e/VoGT8p0GQQCRuT1iCTOoqpigeM9cFTVwhrlksDcsnbJH+wPrqqEGxBjbcnY5m4juHD4qBx2vJpd8RID2212lukdgfLA=="/>
</cfdi:Complemento>
</cfdi:Comprobante>
Alguien que me pueda orientar a como obtener el detalle (NoIdentificacion,Cantidad,Descripcion, ETC)

Gracias de antemano

Neftali [Germán.Estévez] 03-06-2024 10:17:39

Yo lo he probado con la versión 11, pero funcionará igual con el resto de versiones...
Crea un nuevo proyecto VCL en Delphi.

Desde File/New accede a "XML Data Binding" y inicia el asistente:




Ejecuta el asistente con tu fichero de datos XML (el que has puesto en el mensaje):




Ejecuta el asistente con Siguiente, siguiente,....
(ten en cuenta la opción que te pongo abajo para desactivarla):



Neftali [Germán.Estévez] 03-06-2024 10:18:47

1 Archivos Adjunto(s)
Al acabar te generará un fichero que te añado en los adjuntos con los interfaces necesarios para trabajar (leer y escribir) un XML como el que has puesto:

Código Delphi [-]
{****************************************************************}
{                                                                }
{                        XML Data Binding                        }
{                                                                }
{         Generated on: 03/06/2024 9:51:32                       }
{       Generated from: C:\ProyectosDelphi\Parse XML\Datos.xml   }
{                                                                }
{****************************************************************}

unit DatosComprobante;

interface

uses Xml.xmldom, Xml.XMLDoc, Xml.XMLIntf;

type

{ Forward Decls }

  IXMLComprobante = interface;
  IXMLComprobante_InformacionGlobal = interface;
  IXMLComprobante_CfdiRelacionados = interface;
  IXMLComprobante_CfdiRelacionadosList = interface;
  IXMLComprobante_CfdiRelacionados_CfdiRelacionado = interface;
  IXMLComprobante_Emisor = interface;
  IXMLComprobante_Receptor = interface;
  IXMLComprobante_Conceptos = interface;
  IXMLComprobante_Conceptos_Concepto = interface;
  IXMLComprobante_Conceptos_Concepto_Impuestos = interface;
  IXMLComprobante_Conceptos_Concepto_Impuestos_Traslados = interface;
  IXMLComprobante_Conceptos_Concepto_Impuestos_Traslados_Traslado = interface;
  IXMLComprobante_Conceptos_Concepto_Impuestos_Retenciones = interface;
  IXMLComprobante_Conceptos_Concepto_Impuestos_Retenciones_Retencion = interface;
  IXMLComprobante_Conceptos_Concepto_ACuentaTerceros = interface;
  IXMLComprobante_Conceptos_Concepto_InformacionAduanera = interface;
  IXMLComprobante_Conceptos_Concepto_InformacionAduaneraList = interface;
  IXMLComprobante_Conceptos_Concepto_CuentaPredial = interface;
  IXMLComprobante_Conceptos_Concepto_CuentaPredialList = interface;
  IXMLComprobante_Conceptos_Concepto_ComplementoConcepto = interface;
  IXMLComprobante_Conceptos_Concepto_Parte = interface;
  IXMLComprobante_Conceptos_Concepto_ParteList = interface;
  IXMLComprobante_Conceptos_Concepto_Parte_InformacionAduanera = interface;
  IXMLComprobante_Impuestos = interface;
  IXMLComprobante_Impuestos_Retenciones = interface;
  IXMLComprobante_Impuestos_Retenciones_Retencion = interface;
  IXMLComprobante_Impuestos_Traslados = interface;
  IXMLComprobante_Impuestos_Traslados_Traslado = interface;
  IXMLComprobante_Complemento = interface;
  IXMLComprobante_Addenda = interface;

{ IXMLComprobante }

  IXMLComprobante = interface(IXMLNode)
    ['{1B030F71-3BDF-403F-879E-FEEFF468D142}']
  ...
...

Una vez que tengas ese fichero en tu proyecto, las líneas para leer los datos que necesitas son triviales.
Un código como este:

Código Delphi [-]

...

uses
  DatosComprobante;

procedure _Log(msg:string);
begin
  Form3.mmDatos.Lines.Add(msg);
end;

procedure TForm3.Button1Click(Sender: TObject);
var
  comp:IXMLComprobante;
  concepto:IXMLComprobante_Conceptos_Concepto;
  idx:integer;
begin
  comp := LoadComprobante('c:\ProyectosDelphi\Ej Parse XML\Datos.xml');

  _Log('Version: ' + comp.Version);
  _Log('Serie: ' + comp.Serie);
  _Log('Folio: ' + comp.Folio);
  _Log('...');

  _Log('Emisor:');
  _Log('   RFC: ' + comp.Emisor.Rfc);
  _Log('   Nombre: ' + comp.Emisor.Nombre);
  _Log('   ... ');

  _Log('Receptor: ' + comp.Receptor.Rfc);
  _Log('   RFC: ' + comp.Receptor.Rfc);
  _Log('   Nombre: ' + comp.Receptor.Nombre);
  _Log('   ... ');

  _Log('Conceptos: ');

  for idx := 0 to comp.Conceptos.Count - 1 do begin
    concepto := comp.Conceptos[idx];

    _Log('   Conceptos; Indice=' + idx.ToString);

    _Log('        ClaveProdServ:' + concepto.ClaveProdServ);
    _Log('        NoIdentificacion:' + concepto.NoIdentificacion);
    _Log('        Cantidad:' + concepto.Cantidad.ToString);
    _Log('        ClaveUnidad:' + concepto.ClaveUnidad);
    _Log('        ...');

  end;

  _Log('...');

end;


Te genera un resultado como el que se ve a continuación:


mRoman 03-06-2024 22:42:35

Mi estimado Netftali!...muchas gracias por responder.

Lo pondré en práctica en este momento y les comento como me fue.

Gracias nuevamente.

Saludos.

mRoman 03-06-2024 23:47:20

Ya lo generé, pero no lo genera igual que el tuyo...por cierto jamas mencioné la version Delphi q estoy usando, Delphi6.

Asi lo genera
Código:


{****************************************************************}
{                                                                }
{                    Delphi XML Data Binding                    }
{                                                                }
{        Generated on: 03/06/2024 02:06:09 p. m.                }
{      Generated from: D:\Sistemas\XML\Archivos XML\DATOS.xml  }
{                                                                }
{****************************************************************}
unit DatosComprobante;

interface

uses xmldom, XMLDoc, XMLIntf;

type

{ Forward Decls }

  IXMLComprobante = interface;
  IXMLInformacionGlobal = interface;
  IXMLCfdiRelacionados = interface;
  IXMLCfdiRelacionadosList = interface;
  IXMLCfdiRelacionado = interface;
  IXMLEmisor = interface;
  IXMLReceptor = interface;
  IXMLConceptos = interface;
  IXMLConcepto = interface;
  IXMLImpuestos = interface;
  IXMLTraslados = interface;
  IXMLTraslado = interface;
  IXMLRetenciones = interface;
  IXMLRetencion = interface;
  IXMLACuentaTerceros = interface;
  IXMLInformacionAduanera = interface;
  IXMLInformacionAduaneraList = interface;
  IXMLCuentaPredial = interface;
  IXMLCuentaPredialList = interface;
  IXMLComplementoConcepto = interface;
  IXMLParte = interface;
  IXMLParteList = interface;
  IXMLInformacionAduanera = interface;
  IXMLImpuestos = interface;
  IXMLRetenciones = interface;
  IXMLRetencion = interface;
  IXMLTraslados = interface;
  IXMLTraslado = interface;
  IXMLComplemento = interface;
  IXMLAddenda = interface;

{ IXMLComprobante }

  IXMLComprobante = interface(IXMLNode)
    ['{797224A1-3B7B-4FF0-B401-255EF9005B48}']
    { Property Accessors }
    function Get_Version: WideString;

En esta parte del código q envío, no sale igual como el que tu generaste...hice lo q me indicaste, pero me hace ruido el que no tenga para crear proyectos VCL, solo CLX. Tienes alguna idea del porque no se genera como el tuyo??. Al momento de compilar el programa me marca errores: "[Error] DatosComprobante.pas(42): Identifier redeclared: 'IXMLInformacionAduanera", los encerre entre llaves y marca otro error:



Es una imagen, espero se vea.

Gracias.

mRoman 04-06-2024 00:35:20

La imagen del error:

https://ibb.co/42SDPZt

Neftali [Germán.Estévez] 04-06-2024 11:52:39

1 Archivos Adjunto(s)
Prueba con el adjunto.
He adaptado el fichero que te pasé con algunos cambios que no soportan las versiones antiguas. Unicode, ñ,...

mRoman 04-06-2024 18:28:42

Cita:

Empezado por Neftali [Germán.Estévez] (Mensaje 555917)
Prueba con el adjunto.
He adaptado el fichero que te pasé con algunos cambios que no soportan las versiones antiguas. Unicode, ñ,...

Ok. Lo aplicaré y te comento.

mRoman 05-06-2024 17:37:36

Cita:

Empezado por Neftali [Germán.Estévez] (Mensaje 555917)
Prueba con el adjunto.
He adaptado el fichero que te pasé con algunos cambios que no soportan las versiones antiguas. Unicode, ñ,...

Hola Neftali.

Pues con la novedad que no compila, marca el siguiente error:

Cita:

[Error] uLeerDatos.pas(40): Undeclared identifier: 'TFormatSettings'

Neftali [Germán.Estévez] 05-06-2024 17:59:52

Lo hice con Delphi 7, busca esa variable global en Delphi 6, y mientras tanto puedes eliminar eso.

mRoman 07-06-2024 00:54:38

Cita:

Empezado por Neftali [Germán.Estévez] (Mensaje 555917)
Prueba con el adjunto.
He adaptado el fichero que te pasé con algunos cambios que no soportan las versiones antiguas. Unicode, ñ,...

Listo!!...ya se pudo ejecutar tu ejemplo, esta muy bien, con esto puedo avanzar, muchas gracias. Ahora me tocaría investigar porque no pude hacerlo yo con el Delphi6, como solventar los errores que me marco haciendolo yo con esa version de delphi.

Muchas gracias Neftalí. Saludos

mRoman 07-06-2024 00:56:17

Cita:

Empezado por mRoman (Mensaje 555915)
Ya lo generé, pero no lo genera igual que el tuyo...por cierto jamas mencioné la version Delphi q estoy usando, Delphi6.

Asi lo genera
Código:


{****************************************************************}
{                                                                }
{                    Delphi XML Data Binding                    }
{                                                                }
{        Generated on: 03/06/2024 02:06:09 p. m.                }
{      Generated from: D:\Sistemas\XML\Archivos XML\DATOS.xml  }
{                                                                }
{****************************************************************}
unit DatosComprobante;

interface

uses xmldom, XMLDoc, XMLIntf;

type

{ Forward Decls }

  IXMLComprobante = interface;
  IXMLInformacionGlobal = interface;
  IXMLCfdiRelacionados = interface;
  IXMLCfdiRelacionadosList = interface;
  IXMLCfdiRelacionado = interface;
  IXMLEmisor = interface;
  IXMLReceptor = interface;
  IXMLConceptos = interface;
  IXMLConcepto = interface;
  IXMLImpuestos = interface;
  IXMLTraslados = interface;
  IXMLTraslado = interface;
  IXMLRetenciones = interface;
  IXMLRetencion = interface;
  IXMLACuentaTerceros = interface;
  IXMLInformacionAduanera = interface;
  IXMLInformacionAduaneraList = interface;
  IXMLCuentaPredial = interface;
  IXMLCuentaPredialList = interface;
  IXMLComplementoConcepto = interface;
  IXMLParte = interface;
  IXMLParteList = interface;
  IXMLInformacionAduanera = interface;
  IXMLImpuestos = interface;
  IXMLRetenciones = interface;
  IXMLRetencion = interface;
  IXMLTraslados = interface;
  IXMLTraslado = interface;
  IXMLComplemento = interface;
  IXMLAddenda = interface;

{ IXMLComprobante }

  IXMLComprobante = interface(IXMLNode)
    ['{797224A1-3B7B-4FF0-B401-255EF9005B48}']
    { Property Accessors }
    function Get_Version: WideString;

En esta parte del código q envío, no sale igual como el que tu generaste...hice lo q me indicaste, pero me hace ruido el que no tenga para crear proyectos VCL, solo CLX. Tienes alguna idea del porque no se genera como el tuyo??. Al momento de compilar el programa me marca errores: "[Error] DatosComprobante.pas(42): Identifier redeclared: 'IXMLInformacionAduanera", los encerre entre llaves y marca otro error:



Es una imagen, espero se vea.

Gracias.

Sabes porqué no logré generarlo igual que el tuyo, porqué a mi me lo generó de manera distinta al ejemplo que me enviaste???...

Gracias por tu tiempo.

Neftali [Germán.Estévez] 07-06-2024 08:30:00

Cita:

Empezado por mRoman (Mensaje 555979)
Sabes porqué no logré generarlo igual que el tuyo, porqué a mi me lo generó de manera distinta al ejemplo que me enviaste???...


Posiblemente la versión de Delphi 6 trabajara con un modelo de XML más antiguo. Piensa que estamos hablando de 2001.
Es posible que los ficheros XML ahora incluyan más cosas que en su día no se podían procesar.

mRoman 08-06-2024 00:27:30

Cita:

Empezado por Neftali [Germán.Estévez] (Mensaje 555981)
Posiblemente la versión de Delphi 6 trabajara con un modelo de XML más antiguo. Piensa que estamos hablando de 2001.
Es posible que los ficheros XML ahora incluyan más cosas que en su día no se podían procesar.

Si es muy probable. Gracias por la orientación y tu tiempo.


La franja horaria es GMT +2. Ahora son las 05:35:39.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi