Ver Mensaje Individual
  #3  
Antiguo 02-03-2022
Avatar de Angel.Matilla
Angel.Matilla Angel.Matilla is offline
Miembro
 
Registrado: ene 2007
Ubicación: Toledo - España
Posts: 1.418
Reputación: 21
Angel.Matilla Va por buen camino
Bueno, después de dos días dando vueltas y buscando información encontré una solución. No sé si será la mejor, pero funciona.

Hay que definir una variable IXMLNodeList y me ha quedado así:
Código:
IXMLNodeList *lstNodos;

ThousandSeparator = ',';
DecimalSeparator  = '.';

XMLDocument->Active = true;
iNode0 = XMLDocument->DocumentElement;
iNode1 = iNode0->ChildNodes->FindNode("CstmrDrctDbtInitn");
if (iNode1 == NULL)
     continue;

iNode2 = iNode1->ChildNodes->FindNode("GrpHdr");
if (iNode2 == NULL)
     continue;

lstNodos = iNode1->ChildNodes;
iNode2 = lstNodos->FindNode((DOMString)"PmtInf");
while (iNode2 != NULL)
{
     iNode3 = iNode2->ChildNodes->FindNode("PmtInfId");
     if (iNode3 != NULL && iNode3->IsTextElement)
     {
          [Código para tratar cada nodo]
     }
     iNode2 = lstNodos->FindSibling(iNode2, 1);
}
El método FindSibling lleva dos parámetros: el primero es el nodo que se está tratando en este momento (iNode2 en este caso) y el segundo es el sentido en que se quiere avanzar en la estructura (positivo hacia adelante, negativo hacia atrás) y el número de nodos que se quiere saltar (si pone uno se busca elsiguiente igual, etc.)
Responder Con Cita