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 に答える