Ver Mensaje Individual
  #5  
Antiguo 06-03-2023
Avatar de duilioisola
[duilioisola] duilioisola is offline
Miembro Premium
 
Registrado: ago 2007
Ubicación: Barcelona, España
Posts: 1.734
Reputación: 20
duilioisola Es un diamante en brutoduilioisola Es un diamante en brutoduilioisola Es un diamante en bruto
El for de impuestos debes hacerlo sobre el nodo que toque.
Podría fallar si un elemento tiene dos impuestos y otro solo uno.
Código Delphi [-]
// Recorro los nodos 
for i := 0 to MainNode.ChildNodes['detalles'].ChildNodes.Count-1 do
          Begin
              // Obtengo descripcion de este detalle
              CustomerNode := MainNode.ChildNodes['detalles'].ChildNodes[i];
              showmessage(CustomerNode.ChildNodes['descripcion'].text);

                 // Recorro los nodos  del nodo .
                 for j := 0 to MainNode.ChildNodes['detalles'].ChildNodes[i].ChildNodes['impuestos'].Count-1 do { MainNode.ChildNodes['detalles'].ChildNodes**[i]** }
                  Begin
                    CustomerNode1:= MainNode.ChildNodes['detalles'].ChildNodes[i].ChildNodes['impuestos'].ChildNodes[j];
                    showmessage(CustomerNode1.ChildNodes['baseImponible'].text);
                  End;
          End;

Pero para hacerlo mas entendible yo lo reformatearía así:
Código Delphi [-]
// Recorro los nodos  del nodo < detalles >
NodoDetalles := MainNode.ChildNodes['detalles'];
for i := 0 to NodoDetalles.ChildNodes.Count-1 do
Begin
  // Obtengo el nodo < detalle >
  NodoDetalle := NodoDetalles.ChildNodes[i];

  // Aquí habría que comprobar que exista el nodo < descripcion > dentro de < detalle >
  showmessage(NodoDetalle.ChildNodes['descripcion'].text);

  // Recorro los nodos < impuesto > del nodo < detalles >< impuestos >.
  for j := 0 to NodoDetalle.ChildNodes['impuestos'].Count-1 do
  Begin
    // De cada impuesto obtengo el nodo < baseImponible >
    NodoImpuesto := NodoDetalles.ChildNodes[j];
    showmessage(NodoImpuesto.ChildNodes['baseImponible'].text);
  End;
End;

Última edición por duilioisola fecha: 06-03-2023 a las 19:12:06.
Responder Con Cita