Página 1 de 1

Error con namespaces (programacion Delphi)

Publicado: Mar Feb 15, 2022 9:25 am
por Czar
Hola buen día

Estoy migrando mi app a la versión 4.0 del CFDI, pero tengo un problema. Después de crear y llenar mi XML, veo que en algunos nodos me coloca el xmlns y no sé por qué y tampoco he podido quitarlos. Este es una muestra del XML como lo deja:

Código: Seleccionar todo

<cfdi:Conceptos>

<Concepto xmlns="http://www.sat.gob.mx/cfd/4" ClaveProdServ="51181501" NoIdentificacion="7503004908875" Cantidad="1" ClaveUnidad="H87" Unidad="Pieza" Descripcion="ACARBOSA TAB 50MG C/30 ALPHARMA" ValorUnitario="45.720" Importe="45.72" Descuento="0.00"/>

<Concepto xmlns="http://www.sat.gob.mx/cfd/4" ClaveProdServ="42142609" NoIdentificacion="7506022301758" Cantidad="1" ClaveUnidad="H87" Unidad="Pieza" Descripcion="JERINGA 3 ML 21G X 32MM C/100 PZ VERDE (SENSIMEDICAL) C/AGUJA" ValorUnitario="194.310" Importe="194.31" Descuento="0.00">

Quise eliminar el xmlns mediante código con la siguiente línea, pero no funciona:

Código: Seleccionar todo

concepto[x].Attributes['xmlns'] := '';

Código: Seleccionar todo

<cfdi:Conceptos>

<Concepto xmlns="" ClaveProdServ="51181501" NoIdentificacion="7503004908875" Cantidad="1" ClaveUnidad="H87" Unidad="Pieza" Descripcion="ACARBOSA TAB 50MG C/30 ALPHARMA" ValorUnitario="45.720" Importe="45.72" Descuento="0.00"/>

<Concepto xmlns="" ClaveProdServ="42142609" NoIdentificacion="7506022301758" Cantidad="1" ClaveUnidad="H87" Unidad="Pieza" Descripcion="JERINGA 3 ML 21G X 32MM C/100 PZ VERDE (SENSIMEDICAL) C/AGUJA" ValorUnitario="194.310" Importe="194.31" Descuento="0.00">
Alguna idea/sugerencia?

De antemano muchas gracias, ojalá puedan ayudarme.

Saludos

Re: Error con namespaces (programacion Delphi)

Publicado: Mar Feb 15, 2022 10:21 am
por Dado
Si, es un poco especial el manejo, y depende de la version de Delphi

Como algunas cosas las seguimos usando en Delphi 7 y otras en Delphi XE2, usamos lo siguiente al agregar la informacion al nodo :

Código: Seleccionar todo

		{$IF CompilerVersion >= 20}
		with Conceptos.AddChild('cfdi:Concepto') as IXMLComprobante_Conceptos_Concepto do
		{$ELSE}
		with Conceptos.Add do   <<<--este es el que seguramente estas usando
		{$IFEND}
		begin
			ClaveProdServ := '01010101';
			NoIdentificacion := 'ART01';
			Cantidad := '1';
			ClaveUnidad := 'EA';
			...etc...

Re: Error con namespaces (programacion Delphi)

Publicado: Mar Feb 15, 2022 10:50 am
por Czar
Hola Dado

Es correcto, estoy utilizando XE2 y en mi código utilizo el ADD en vez de AddChild

Código: Seleccionar todo

  with Conceptos do begin
      Add;
      Concepto[idxP].ClaveProdServ     := _producs[idxP].clave;
En general así es como tengo mi código actualmente.