全國最多中醫師線上諮詢網站-台灣中醫網
發文 回覆 瀏覽次數:1739
推到 Plurk!
推到 Facebook!

如何把 XML 顯示出來?

尚未結案
Diviner
初階會員


發表:36
回覆:112
積分:34
註冊:2002-03-13

發送簡訊給我
#1 引用回覆 回覆 發表時間:2004-06-08 18:18:07 IP:218.103.xxx.xxx 未訂閱
我有個 XML String, 請問如何把它合符 format 地顯示出來呢? (不想把它 Save 為 Temp file), 謝謝。 -- 小卜子
------
--
小卜子
sl@cableplus.com.cn
高階會員


發表:168
回覆:359
積分:130
註冊:2004-03-26

發送簡訊給我
#2 引用回覆 回覆 發表時間:2004-06-11 13:40:50 IP:218.80.xxx.xxx 未訂閱
用webbrownser
Diviner
初階會員


發表:36
回覆:112
積分:34
註冊:2002-03-13

發送簡訊給我
#3 引用回覆 回覆 發表時間:2004-06-17 02:08:14 IP:61.10.xxx.xxx 未訂閱
引言: 用webbrownser
有沒有拼錯字? 是 TWebBrowser 嗎? 若是的話, 我正正是不懂得直接把 XML String 傳入去, 它好像只懂往 URI 吃檔案。 -- 小卜子
------
--
小卜子
ccchen
版主


發表:61
回覆:940
積分:1394
註冊:2002-04-15

發送簡訊給我
#4 引用回覆 回覆 發表時間:2004-06-17 09:27:56 IP:218.170.xxx.xxx 未訂閱
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

發送簡訊給我
#5 引用回覆 回覆 發表時間:2004-06-24 11:05:09 IP:218.103.xxx.xxx 未訂閱
引言: 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;
不好意思, 很遲才覆。 這段 Code 試過了, 不行。其中的 WebB.Document 總是 Nil 的, 那裡出問題呢? 謝謝。 -- 小卜子
------
--
小卜子
ccchen
版主


發表:61
回覆:940
積分:1394
註冊:2002-04-15

發送簡訊給我
#6 引用回覆 回覆 發表時間:2004-06-24 11:50:20 IP:218.170.xxx.xxx 未訂閱
引言:
引言: 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;
不好意思, 很遲才覆。 這段 Code 試過了, 不行。其中的 WebB.Document 總是 Nil 的, 那裡出問題呢? 謝謝。 -- 小卜子
假設你在Form上有一個TWebBrowser叫做WebBrowser1 1. 則FormCreate時如上之FormCreate先令其為空白 2. 寫一個procedure如上之ShowinWebBrowser(webB:TWebBrowser; s:string); 3. 當你要顕示字串時呼叫此procedure傳入參數 如: ShowinWebBrowser(WebBrowser1, 'test string'); [note]如果你呼叫此procedure未傅入參數,webB當然是nil
Diviner
初階會員


發表:36
回覆:112
積分:34
註冊:2002-03-13

發送簡訊給我
#7 引用回覆 回覆 發表時間:2004-06-24 12:21:48 IP:218.103.xxx.xxx 未訂閱
引言:
引言:
引言: 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;
不好意思, 很遲才覆。 這段 Code 試過了, 不行。其中的 WebB.Document 總是 Nil 的, 那裡出問題呢? 謝謝。 -- 小卜子
假設你在Form上有一個TWebBrowser叫做WebBrowser1 1. 則FormCreate時如上之FormCreate先令其為空白 2. 寫一個procedure如上之ShowinWebBrowser(webB:TWebBrowser; s:string); 3. 當你要顕示字串時呼叫此procedure傳入參數 如: ShowinWebBrowser(WebBrowser1, 'test string'); [note]如果你呼叫此procedure未傅入參數,webB當然是nil
不是 webB 是 Nil, 而是 webB 的 Document 屬性是 Nil。我的 webB 已在使用中, 只是現在是把 XML File 讀入來顯示的, 即是說我要先把 xml 字串寫成 file, 也即是程式額外需要了寫檔案的權限才能運作這部份的功能, 所以想改善一下。 謝謝。 -- 小卜子
------
--
小卜子
Diviner
初階會員


發表:36
回覆:112
積分:34
註冊:2002-03-13

發送簡訊給我
#8 引用回覆 回覆 發表時間:2004-06-24 12:40:12 IP:218.103.xxx.xxx 未訂閱
我把現在用的程式碼寫出來:
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

發送簡訊給我
#9 引用回覆 回覆 發表時間:2004-06-25 08:51:52 IP:218.170.xxx.xxx 未訂閱
是否有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

發送簡訊給我
#10 引用回覆 回覆 發表時間:2004-06-25 11:10:02 IP:218.103.xxx.xxx 未訂閱
引言: 是否有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;
很對不起, 我做少了第一點 webbrowser1.Navigate('about:blank'); 現在顯示得了, 但其顯示內容有點怪怪的。舉例說, 原本 xml 是這樣的:
<?xml version="1.0" encoding="iso-8859-1"?>

  
    
      1000
      10000
    
    1000 - 10000
  

你提供的方法, 會顯示成: 1000 10000 1000 - 100000 也就是把裡面的 tag 的內容一個一個地橫排出來, 但其實我是想看 xml 的全相啊。 再次謝謝你, 請幫忙一下。 -- 小卜子
------
--
小卜子
VICSYS
初階會員


發表:21
回覆:64
積分:32
註冊:2002-10-10

發送簡訊給我
#11 引用回覆 回覆 發表時間:2004-07-07 05:45:32 IP:219.68.xxx.xxx 未訂閱
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('');
    XMLDoc.XML.Add('');
    XMLDoc.XML.Add('');
    XMLDoc.XML.Add('1000');
    XMLDoc.XML.Add('10000');
    XMLDoc.XML.Add('');
    XMLDoc.XML.Add('1000-10000');
    XMLDoc.XML.Add('');
    XMLDoc.XML.Add('');
    XMLDoc.Active:= true;        ANode :=XMLDoc.DocumentElement.ChildNodes.First.ChildNodes.First.ChildNodes.FindNode('Item');
    while (ANode<> nil) do
    begin
      Str := ANode.Text;
      ListBox1.Items.Add(Str);
      ANode := ANode.NextSibling;
    end;        ANode :=XMLDoc.DocumentElement.ChildNodes.First.ChildNodes.FindNode('Hint');
    while (ANode<> nil) do
    begin
      Str := ANode.Text;
      ListBox1.Items.Add(Str);
      ANode := ANode.NextSibling;
    end;      finally
    XMLDoc.Free;
  end;
end;
不知道這是不是您要的...
系統時間:2024-04-26 16:49:50
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!