1

我不知道如何使用 Delphi 从 TWebBrowser ActiveX 组件中检索 XML 内容。

如果结果是 HTML,我可以使用:

 iall := (WebBrowser1.Document AS IHTMLDocument2).body;
 while iall.parentElement <> nil do
 begin
   iall := iall.parentElement;
 end;
 memo1.Text := iall.outerHTML;

但是 URL 返回一个 XML 文件,而 .body 什么也不返回。

下面的代码缺少什么?

var S:String;
begin
   WebBrowser1.Navigate('http://192.168.0.35:8000/api/');
   if Assigned(WebBrowser1.Document) then
   begin
     Doc := (WebBrowser1.Document as IHTMLDocument2);
     XMLText := ???
   end;
end;

备注:我无法使用 Indy HTTPClient 组件,因为该程序将在不同的代理配置上运行,并且很难处理许多配置。

4

1 回答 1

4

这似乎适用于本地 XML 文件,也应该适用于 URL:

procedure TForm3.FormShow(Sender: TObject);
begin
  WebBrowser1.Navigate('file:///d:/temp/TestFile.xml');
end;

procedure TForm3.WebBrowser1DocumentComplete(ASender: TObject;
  const pDisp: IDispatch; const URL: OleVariant);
var
  HTML: IHtmlDocument2;
  XMLText: String;
begin
  HTML := WebBrowser1.Document as IHTMLDocument2;
  XMLText := HTML.body.outerText;

  // Just for display purposes, obviously. 
  ShowMessage(XMLText);
end;
于 2012-07-24T23:14:14.820 回答