Club Delphi  
    Paypal   FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Internet
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Colaboración Paypal con ClubDelphi

 
 
Herramientas Buscar en Tema Desplegado
  #7  
Antiguo 19-06-2017
nincillo nincillo is offline
Miembro
 
Registrado: may 2017
Posts: 190
Poder: 10
nincillo Va por buen camino
Misterio con FindNode en Delphi 2007 ¿Bug?

Hola. Esto a vueltas con el famoso SII y con la verificación de los datos fiscales de los clientes y proveedores.

Para ello hago uso del webservice: https://www1.agenciatributaria.gob.e.../ws/VNifV2SOAP

El caso es que envío la petición sin problema y recibo la respuesta también correctamente.

El problema lo tengo cuando intento interpretar la respuesta:

Código:
<?xml version="1.0"?>
<env:Envelope xmlns:env="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
  <env:Body>
    <VNifV2Sal:VNifV2Sal xmlns:VNifV2Sal="http://www2.agenciatributaria.gob.es/static_files/common/internet/dep/aplicaciones/es/aeat/burt/jdit/ws/VNifV2Sal.xsd">
      <VNifV2Sal:Contribuyente>
        <VNifV2Sal:Nif>99999999R</VNifV2Sal:Nif>
        <VNifV2Sal:Nombre>ESPA/OL ESPA/OL JUAN</VNifV2Sal:Nombre>
        <VNifV2Sal:Resultado>NO IDENTIFICADO</VNifV2Sal:Resultado>
      </VNifV2Sal:Contribuyente>
    </VNifV2Sal:VNifV2Sal>
  </env:Body>
</env:Envelope>
El código fuente que utilizo para interpretar la respuesta:

Código:
procedure TForm1.BtnTratarXMLVariosClick(Sender: TObject);
var
  lDocument : IXMLDocument;
  lNode, lNode2, lNode3, lNode4 : IXMLNode;
  i, j: integer;
begin
  MemoResultadoVarios.Lines.Clear;
  // Cargo el resultado obtenido en un documento xml para luego recorrerlo
  lDocument := TXMLDocument.Create(nil);
  lDocument.LoadFromXML(UTF8Encode(MemoResVarios.Text));
  // Me posiciono en el nodo que realmente tiene los datos que necesito.
  lnode := lDocument.ChildNodes.FindNode('env:Envelope');
  if lnode <> nil then
    begin
      if RecursiveFindNodeValue(lnode, 'faultstring') <> '' then
          begin
            MemoResultadoVarios.Lines.add('Error: ' + RecursiveFindNodeValue(lnode, 'faultstring'));
          end
        else
          begin
            // Localizo el nodo con el cuerpo del mensaje xml
            LNode2 := lNode.ChildNodes.FindNode('env:Body');
            // Me recorro todos los nodos hijos
            for j := 0 to lNode2.ChildNodes.Count - 1 do
              begin
                // Aguí voy poniendo en el memo los nombres que voy encontrando...
                MemoResultadoVarios.Lines.add(lNode2.ChildNodes[j].NodeName);
                // Y si algún nodo se llama como el que yo estoy buscanco,
                //se supone que estoy en el sitio que debo y buscando el nombre de nodo correcto
                If lNode2.ChildNodes[j].NodeName = 'VNifV2Sal:VNifV2Sal' then
                  begin
                     // Añado al log que lo encontré
                     MemoResultadoVarios.Lines.add('Entré en el if');
                     // Ahora intento hacer la misma búsqueda con el FindNode
                     LNode3 := lNode2.ChildNodes.FindNode('VNifV2Sal:VNifV2Sal');
                     // Y si no lo encuentro, entonces lo añado tambien al log
                     if not Assigned(lNode3) then MemoResultadoVarios.Lines.add('lNode3 no asignado nulo');
                  end;
              end;
          end;
    end;
end;

Y el log que obtengo:

Código:
VNifV2Sal:VNifV2Sal
Entré en el if
lNode3 no asignado nulo
¿Qué estoy haciendo mal?

Algo similar me está pasando cuando intento interpretar las respuesta cada vez que envío las facturas al SII.

https://www.clubdelphi.com/foros/sho...7&postcount=29
Responder Con Cita
 


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
crear un grafico en excel 2007 desde Delphi 2007 Jose Manuel Varios 1 27-12-2013 19:56:30
Como abrir una caja registradora desde delphi 2007 ingabraham Varios 5 04-01-2013 18:44:28
crear un trigger firebird desde delphi 2007 ingabraham Firebird e Interbase 4 03-01-2013 10:46:10
Hyperlink en Word desde Delphi 2007 Jose Manuel Servers 1 12-10-2011 15:28:34
Como interpretar WM_KEYDOWN casacham OOP 3 14-04-2009 09:32:00


La franja horaria es GMT +2. Ahora son las 15:08:17.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi