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
[-]
for i := 0 to MainNode.ChildNodes['detalles'].ChildNodes.Count-1 do
Begin
CustomerNode := MainNode.ChildNodes['detalles'].ChildNodes[i];
showmessage(CustomerNode.ChildNodes['descripcion'].text);
for j := 0 to MainNode.ChildNodes['detalles'].ChildNodes[i].ChildNodes['impuestos'].Count-1 do
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
[-]
NodoDetalles := MainNode.ChildNodes['detalles'];
for i := 0 to NodoDetalles.ChildNodes.Count-1 do
Begin
NodoDetalle := NodoDetalles.ChildNodes[i];
showmessage(NodoDetalle.ChildNodes['descripcion'].text);
for j := 0 to NodoDetalle.ChildNodes['impuestos'].Count-1 do
Begin
NodoImpuesto := NodoDetalles.ChildNodes[j];
showmessage(NodoImpuesto.ChildNodes['baseImponible'].text);
End;
End;