Ver Mensaje Individual
  #3  
Antiguo 04-03-2023
JCz JCz is offline
Miembro
 
Registrado: oct 2021
Posts: 29
Reputación: 0
JCz Va por buen camino
Cita:
Empezado por IVAND Ver Mensaje
Hola a todos , tengo un problema , no puedo hacer que se pueda leer un nodo de este xml , siempre lee el mismo valor de un nodo hijo
Ejemplo


Lee la BIG COLA PET NO RETORNABLE 2250 ml 6 pack y los impuestos (primer parrafo) , luego lee el segundo bloque COLA PET RETORNABLE 2250 ml 6 pack
y me vuelve a leer el valor del primer impuesto cuando deberia leer el impuesto que correspone al producto COLA PET RETORNABLE 2250 ml 6 pack
Espero me entiendan gracias, seguro sera algo sencillo pero no he podido

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['detalle'].ChildNodes['impuestos'].ChildNodes.Count-1 do
                  Begin
                    CustomerNode1:=MainNode.ChildNodes['detalles'].ChildNodes['detalle'].ChildNodes['impuestos'].ChildNodes[j];
                    showmessage(CustomerNode1.ChildNodes['baseImponible'].text);
               //                       CustomerNode1.NextSibling ;
                  End;
          End;
Adjunto xml

como pueden ver el sistema pasa siempre por el nodo descripcion , pero dentro de ese nodo existe otro nodo , lo lee pero cuando lee el siguiente registro el nodo segundo (customedNode1) no avanza al siguiente registro y se queda siempre leyendo el mismo valor

Leyendo bien la pregunta lo que necesitas es hacer esto
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['detalle'].ChildNodes['impuestos'].ChildNodes.Count-1 do
                  Begin
                    CustomerNode1:=MainNode.ChildNodes['detalles'].ChildNodes[i].ChildNodes['impuestos'].ChildNodes[j];
                    showmessage(CustomerNode1.ChildNodes['baseImponible'].text);

                  End;
          End;

con esta sentencia
Código PHP:
CustomerNode1:=MainNode.ChildNodes['detalles'].ChildNodes['detalle'].ChildNodes['impuestos'].ChildNodes[j]; 
siempre vas a leer el primero
Responder Con Cita