WebBrowser1.Navigate() tải nó vào cửa sổ thành phần RAD bằng cách sử dụng thành phần IE dựng sẵn trong hệ điều hành Windows. Những gì bạn làm là trả lời một cuộc gọi lại (cho thành phần trình duyệt, bấm đúp vào sự kiện OnDownloadComplete) và lưu nó vào tệp trong hàm đó. Đoạn mã từ mã hoạt động:
procedure TMainForm.WB_SaveAs_HTML(WB : TWebBrowser; const FileName : string) ;
var
PersistStream: IPersistStreamInit;
Stream: IStream;
FileStream: TFileStream;
begin
if not Assigned(WB.Document) then
begin
Logg('Document not loaded!') ; //'Logg' adds a line to a log file.
Exit;
end;
PersistStream := WB.Document as IPersistStreamInit;
FileStream := TFileStream.Create(FileName, fmCreate) ;
try
Stream := TStreamAdapter.Create(FileStream, soReference) as IStream;
if Failed(PersistStream.Save(Stream, True)) then ShowMessage('SaveAs HTML fail!') ;
finally
FileStream.Free;
end;
end; (* WB_SaveAs_HTML *)
procedure TMainForm.WebBrowser1DownloadComplete(Sender: TObject);
begin
if (WebBrowser1.Document<>nil)AND NOT(WebBrowser1.busy) then begin
WB_SaveAs_HTML(WebBrowser1,'test.html');
//myStringList.loadFromFile('test.html'); //process it.
end;
end;
Lưu ý rằng một số loại MIME ("tệp") trong IE sẽ dừng đọc và yêu cầu can thiệp thủ công.
Nguồn
2011-03-25 13:30:10
Không chỉ đơn giản là nội dung của tệp foo.xml mà bạn có thể tải trực tiếp? –
Tôi nghĩ rằng đó có thể là một ví dụ. –
XML là kết quả của yêu cầu Http. Nó không phải là một tập tin. – user82002