Si utilizas los componentes SOAP de delphi (THTTPRIO), puedes hacer la 'trampa' de en el evento BeforeExecute, guardar el XML y luego cancelar.
Algo así:
Código Delphi
[-] if(SaveDialog.Execute) then
begin
ss:=TFileStream.Create(SaveDialog.FileName, fmCreate);
SOAPRequest.Position := 0;
ss.CopyFrom(SOAPRequest,SOAPRequest.Size);
ss.Free;
SOAPRequest.Position := 0;
end;
raise Exception.Create('XML exportado');
Donde ss es un TFileStream
A nosotros nos funciona