Club Delphi  
    Paypal   FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Proyecto SIF/Veri*Factu/Ley Antifraude > General/Noticias
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

 
 
Herramientas Buscar en Tema Desplegado
  #4  
Antiguo 21-10-2025
Avatar de seccion_31
seccion_31 seccion_31 is offline
Miembro
 
Registrado: ene 2017
Posts: 472
Poder: 10
seccion_31 Va por buen camino
El "problema" viene desde el WSDL, todos los que usen la funcion ObjectToSOAP obtendran el mismo resultado.

En principio no estamos haciendo nada mal, si la definicion del WSDL viniera de otra forma, la funcion ObjectToSOAP lo haria "correcto".

Manipular el XML cuando ha salido me da un poco de mal rollo, he probado distintas alternativas y manipular el XML con funciones de nodos, etc... no funciona bien. Lo mejor a mi parecer es directamente manipular el archivo de texto:

Código:
function ReemplazarItemEnSeccion(const XMLText, Seccion, NombreViejo, NombreNuevo: string): string;
var
  Inicio, Fin, PosActual: Integer;
  ParteAntes, ParteMedia, ParteDespues: string;
begin
  Result := XMLText;
  PosActual := 1;

  while True do
  begin
    // Buscar apertura de sección
    Inicio := PosEx('<' + Seccion + '>', Result, PosActual);
    if Inicio = 0 then
      Break;

    // Buscar cierre de sección
    Fin := PosEx('</' + Seccion + '>', Result, Inicio);
    if Fin = 0 then
      Break;

    // Extraer contenido dentro de la sección
    ParteAntes := Copy(Result, 1, Inicio + Length(Seccion) + 1);
    ParteMedia := Copy(Result, Inicio + Length(Seccion) + 2, Fin - (Inicio + Length(Seccion) + 2));
    ParteDespues := Copy(Result, Fin, Length(Result) - Fin + 1);

    // Reemplazar solo en la parte media
    ParteMedia := StringReplace(ParteMedia,
      '<' + NombreViejo + '>', '<' + NombreNuevo + '>', [rfReplaceAll, rfIgnoreCase]);
    ParteMedia := StringReplace(ParteMedia,
      '</' + NombreViejo + '>', '</' + NombreNuevo + '>', [rfReplaceAll, rfIgnoreCase]);

    // Reconstruir XML
    Result := ParteAntes + ParteMedia + ParteDespues;

    // Mover posición para siguiente búsqueda (evitar ciclo infinito)
    PosActual := Fin + Length(Seccion) + 2;
  end;
end;
llamar a la funcion por cada "array" del XML

Código:
xmlText := ReemplazarItemEnSeccion(xmlText, 'Destinatarios', 'item', 'IDDestinatario');
y guardar el xmlText

Sinceramente no se que hacer, esto funciona. pero como digo me da "mal rollo" tocar un XML que ha salido limpio.

Tengo que recopilar que arrays existen y colocarlo, quizas como opcion.

Pero como digo no se si tocarlo o no. Porque en modo verifactu, no hay que enviar el RF, y tenerlo como esta ahora, no creo que sea problema. Maximo cuando la AEAT ya lo tiene.

Saludos !

Pienso que no vas a tener problemas en enviar los RF, mientras no toquen el WSDL para cambiar la generacion de las etiquetas de los arrays. Y creo que eso no lo van a tocar. Es mas yo creo que ni se han preocupado de ello.

Me gustaria tener alguna opinion.

Última edición por seccion_31 fecha: 21-10-2025 a las 08:19:20.
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
Restar Campo Generados de SQL kurono Varios 15 23-06-2013 09:35:10
Archivos _XXXX.DBF generados por consulta sql klionsis Varios 1 08-09-2008 18:05:43
Ficheros generados por delphi.NET Mariolarr .NET 1 29-10-2007 19:59:41
Archivos .MAP generados por Delphi Ana Tudela Varios 2 26-10-2005 18:44:48
Archivos temporales generados por TQuerys Balda Conexión con bases de datos 0 14-04-2005 14:18:29


La franja horaria es GMT +2. Ahora son las 23:42:12.


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