xml iteración de nodos

HMG en Español

Moderator: Rathinagiri

Post Reply
jparada
Posts: 430
Joined: Fri Jan 23, 2009 5:18 pm

xml iteración de nodos

Post by jparada »

Hola,

Estoy tratando de leer un xml que puede tener la siguiente estructura:

<cfdi:Impuestos totalImpuestosRetenidos= "0.00" totalImpuestosTrasladados= "5.64">
<cfdi:Retenciones>
<cfdi:Retencion impuesto="IVA" importe="0.00"/>
<cfdi:Retencion impuesto="ISR" importe="0.00"/>
</cfdi:Retenciones>
<cfdi:Traslados>
<cfdi:Traslado impuesto="IVA" tasa="16.00" importe="5.64"/>
<cfdi:Traslado impuesto="IEPS" tasa="0.00" importe="0.00"/>
</cfdi:Traslados>
</cfdi:Impuestos>

El tema es que necesito los nodos retención/traslado, tengo estas líneas y funcionan bien obteniendo los nodos "padres", que son retenciones/traslados, pero no he podido hacer la lectura dentro de este mismo ciclo para obtener todos los nodos y los atributos.

tengo algo así:

Code: Select all

FCFDI_Impuestos := mxmlFindElement( FMXML, FMXML, "cfdi:Impuestos", NIL, NIL, MXML_DESCEND )

subnode := mxmlGetFirstChild( FCFDI_Impuestos )
DO WHILE  subnode != NIL
		IF mxmlGetType( subnode ) == MXML_ELEMENT
			 ? mxmlGetElement( subnode ) 
		ENDIF

		subnode := mxmlGetNextSibling( subnode ) 
ENDDO
la información puede variar conteniendo o no ambos nodos, por ejemplo, también puede ser:
<cfdi:Impuestos totalImpuestosTrasladados= "5.64">
<cfdi:Traslados>
<cfdi:Traslado impuesto="IVA" tasa="16.00" importe="5.64"/>
<cfdi:Traslado impuesto="IEPS" tasa="0.00" importe="0.00"/>
</cfdi:Traslados>
</cfdi:Impuestos>

el código de arriba, simplemente devuelve
cfdi:Retenciones
cfdi:Traslados
o
cfdi:Traslados

he tratado con algunas combinaciones para después de obtener estos nodos, obtener el resto de la información, pero hasta el momento no me ha funcionado..., alguna idea?.

Agradezco cualquier tip que me pueda dar alguna luz en el camino.

Saludos,
Javier
Post Reply