如何把 XML 顯示出來? |
尚未結案
|
Diviner
初階會員 發表:36 回覆:112 積分:34 註冊:2002-03-13 發送簡訊給我 |
|
sl@cableplus.com.cn
高階會員 發表:168 回覆:359 積分:130 註冊:2004-03-26 發送簡訊給我 |
|
Diviner
初階會員 發表:36 回覆:112 積分:34 註冊:2002-03-13 發送簡訊給我 |
|
ccchen
版主 發表:61 回覆:940 積分:1394 註冊:2002-04-15 發送簡訊給我 |
1. 在FormCreate時先
webbrowser1.Navigate('about:blank'); 2. 要顯示字串時(HTML)
procedure ShowinWebBrowser(webB:TWebBrowser; s:string); var v:Variant; HTMLDocument: IHTMLDocument2; begin v := VarArrayCreate([0,0],varVariant); v[0] := s; HTMLDocument := webB.Document as IHTMLDocument2; HTML(pSafearray(TVarData(v).VArray)); HTMLDocument.close; end; |
Diviner
初階會員 發表:36 回覆:112 積分:34 註冊:2002-03-13 發送簡訊給我 |
引言: 1. 在FormCreate時先 webbrowser1.Navigate('about:blank'); 2. 要顯示字串時(HTML)不好意思, 很遲才覆。 這段 Code 試過了, 不行。其中的 WebB.Document 總是 Nil 的, 那裡出問題呢? 謝謝。 -- 小卜子procedure ShowinWebBrowser(webB:TWebBrowser; s:string); var v:Variant; HTMLDocument: IHTMLDocument2; begin v := VarArrayCreate([0,0],varVariant); v[0] := s; HTMLDocument := webB.Document as IHTMLDocument2; HTML(pSafearray(TVarData(v).VArray)); HTMLDocument.close; end;
------
-- 小卜子 |
ccchen
版主 發表:61 回覆:940 積分:1394 註冊:2002-04-15 發送簡訊給我 |
引言:假設你在Form上有一個TWebBrowser叫做WebBrowser1 1. 則FormCreate時如上之FormCreate先令其為空白 2. 寫一個procedure如上之ShowinWebBrowser(webB:TWebBrowser; s:string); 3. 當你要顕示字串時呼叫此procedure傳入參數 如: ShowinWebBrowser(WebBrowser1, 'test string'); [note]如果你呼叫此procedure未傅入參數,webB當然是nil引言: 1. 在FormCreate時先 webbrowser1.Navigate('about:blank'); 2. 要顯示字串時(HTML)不好意思, 很遲才覆。 這段 Code 試過了, 不行。其中的 WebB.Document 總是 Nil 的, 那裡出問題呢? 謝謝。 -- 小卜子procedure ShowinWebBrowser(webB:TWebBrowser; s:string); var v:Variant; HTMLDocument: IHTMLDocument2; begin v := VarArrayCreate([0,0],varVariant); v[0] := s; HTMLDocument := webB.Document as IHTMLDocument2; HTML(pSafearray(TVarData(v).VArray)); HTMLDocument.close; end; |
Diviner
初階會員 發表:36 回覆:112 積分:34 註冊:2002-03-13 發送簡訊給我 |
引言:不是 webB 是 Nil, 而是 webB 的 Document 屬性是 Nil。我的 webB 已在使用中, 只是現在是把 XML File 讀入來顯示的, 即是說我要先把 xml 字串寫成 file, 也即是程式額外需要了寫檔案的權限才能運作這部份的功能, 所以想改善一下。 謝謝。 -- 小卜子引言:假設你在Form上有一個TWebBrowser叫做WebBrowser1 1. 則FormCreate時如上之FormCreate先令其為空白 2. 寫一個procedure如上之ShowinWebBrowser(webB:TWebBrowser; s:string); 3. 當你要顕示字串時呼叫此procedure傳入參數 如: ShowinWebBrowser(WebBrowser1, 'test string'); [note]如果你呼叫此procedure未傅入參數,webB當然是nil引言: 1. 在FormCreate時先 webbrowser1.Navigate('about:blank'); 2. 要顯示字串時(HTML)不好意思, 很遲才覆。 這段 Code 試過了, 不行。其中的 WebB.Document 總是 Nil 的, 那裡出問題呢? 謝謝。 -- 小卜子procedure ShowinWebBrowser(webB:TWebBrowser; s:string); var v:Variant; HTMLDocument: IHTMLDocument2; begin v := VarArrayCreate([0,0],varVariant); v[0] := s; HTMLDocument := webB.Document as IHTMLDocument2; HTML(pSafearray(TVarData(v).VArray)); HTMLDocument.close; end;
------
-- 小卜子 |
Diviner
初階會員 發表:36 回覆:112 積分:34 註冊:2002-03-13 發送簡訊給我 |
我把現在用的程式碼寫出來:
procedure TForm1.ShowXML(const xml: String); procedure SaveXMLToTempFile(const xml, fname: String); var f: TextFile; begin AssignFile(f, fname); Rewrite(f); // Create & Open file. try Writeln(f, xml); // Write text to file. finally CloseFile(f); end; end; function PathToURI(const path: String): String; const OldDelimiter = '\'; NewDelimiter = '/'; begin result := 'file:///' StringReplace(path, OldDelimiter, NewDelimiter, [rfReplaceAll]); end; var TempFile: String; URI: String; begin TempFile := ExtractFilePath(ParamStr(0)) 'Temp.xml'; URI := PathToURI(TempFile); SaveXMLToTempFile(xml, TempFile); WebBrowser1.Navigate(URI); end;-- 小卜子
------
-- 小卜子 |
ccchen
版主 發表:61 回覆:940 積分:1394 註冊:2002-04-15 發送簡訊給我 |
是否有uses MSHTML
unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, Menus, StdCtrls, ExtCtrls, ComCtrls,mshtml, SHDocVw,ActiveX, OleCtrls; type TForm1 = class(TForm) WebBrowser1: TWebBrowser; Button1: TButton; procedure FormCreate(Sender: TObject); procedure Button1Click(Sender: TObject); private { Private declarations } public { Public declarations } end; var Form1: TForm1; implementation {$R *.dfm} procedure ShowinWebBrowser(webB:TWebBrowser; s:string); var v:Variant; HTMLDocument: IHTMLDocument2; begin v := VarArrayCreate([0,0],varVariant); v[0] := s; HTMLDocument := webB.Document as IHTMLDocument2; HTML(pSafearray(TVarData(v).VArray)); HTMLDocument.close; end; procedure TForm1.FormCreate(Sender: TObject); begin webbrowser1.Navigate('about:blank'); end; procedure TForm1.Button1Click(Sender: TObject); begin ShowinWebBrowser(WebBrowser1,'xx.xml'); end; |
Diviner
初階會員 發表:36 回覆:112 積分:34 註冊:2002-03-13 發送簡訊給我 |
引言: 是否有uses MSHTML很對不起, 我做少了第一點 webbrowser1.Navigate('about:blank'); 現在顯示得了, 但其顯示內容有點怪怪的。舉例說, 原本 xml 是這樣的:unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, Menus, StdCtrls, ExtCtrls, ComCtrls,mshtml, SHDocVw,ActiveX, OleCtrls; type TForm1 = class(TForm) WebBrowser1: TWebBrowser; Button1: TButton; procedure FormCreate(Sender: TObject); procedure Button1Click(Sender: TObject); private { Private declarations } public { Public declarations } end; var Form1: TForm1; implementation {$R *.dfm} procedure ShowinWebBrowser(webB:TWebBrowser; s:string); var v:Variant; HTMLDocument: IHTMLDocument2; begin v := VarArrayCreate([0,0],varVariant); v[0] := s; HTMLDocument := webB.Document as IHTMLDocument2; HTML(pSafearray(TVarData(v).VArray)); HTMLDocument.close; end; procedure TForm1.FormCreate(Sender: TObject); begin webbrowser1.Navigate('about:blank'); end; procedure TForm1.Button1Click(Sender: TObject); begin ShowinWebBrowser(WebBrowser1,'xx.xml'); end; <?xml version="1.0" encoding="iso-8859-1"?>你提供的方法, 會顯示成: 1000 10000 1000 - 100000 也就是把裡面的 tag 的內容一個一個地橫排出來, 但其實我是想看 xml 的全相啊。 再次謝謝你, 請幫忙一下。 -- 小卜子
------
-- 小卜子 |
VICSYS
初階會員 發表:21 回覆:64 積分:32 註冊:2002-10-10 發送簡訊給我 |
procedure TForm1.Button1Click(Sender: TObject); var ANode : IXMLNode; Str: widestring; XMLDoc: TXMLDocument; begin XMLDoc:= TXMLDocument.Create(Self); try XMLDoc.XML.Add('<?xml version="1.0" encoding="iso-8859-1"?>'); XMLDoc.XML.Add('不知道這是不是您要的... |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |