?? unit1.pas
字號:
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, xmldom, XMLIntf, msxmldom, XMLDoc, StdCtrls, Grids, XMLParse, test,
IdCoder, IdCoder3to4, IdCoderMIME, IdBaseComponent;
const INVAILDATED_TEXT = '無效的節(jié)點或者該節(jié)點不能包括單獨的Text';
INVAILDATED_ATTRIBUTE = '無效的節(jié)點或者屬性';
INVALIDATED_PARENTNODE = '無效的父節(jié)點';
type
TForm1 = class(TForm)
sgdData: TStringGrid;
XMLDocument1: TXMLDocument;
Memo1: TMemo;
Button3: TButton;
Button5: TButton;
Label1: TLabel;
Label2: TLabel;
Label3: TLabel;
labAction: TLabel;
GroupBox1: TGroupBox;
Label5: TLabel;
labIP: TLabel;
Label7: TLabel;
labHandler: TLabel;
Label9: TLabel;
labUnit: TLabel;
procedure FormCreate(Sender: TObject);
procedure Button3Click(Sender: TObject);
procedure Button5Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
XML : TXMLDOMEx;
implementation
{$R *.dfm}
procedure TForm1.FormCreate(Sender: TObject);
begin
XML := TXMLDOMEx.Create('test.xml');
// 初始化sgdData
sgdData.Cells[0, 0] := 'name' ;
sgdData.Cells[1, 0] := 'sex' ;
sgdData.Cells[2, 0] := 'age' ;
sgdData.Cells[3, 0] := 'duty' ;
// End .
end;
procedure TForm1.Button3Click(Sender: TObject);
var xml :IXMLXMLPackageType;
begin
xml := LoadXMLPackage( 'test.xml' );
memo1.Lines.Add(xml.Data.Row[1].name); // 嘿嘿, 簡單吧
end;
procedure TForm1.Button5Click(Sender: TObject);
var strTemp :String; // 臨時變量
strNodePath :String; // 訪問的節(jié)點路徑
i, j, iCount :Integer; // 計數變量, 記錄數.
XMLNode :IXMLNode; // XML節(jié)點
begin
// 開始解析節(jié)點(元素) clientinfo
strNodePath := 'XMLPackage.clientinfo';
if not xml.GetNodeAttribute( strNodePath, 'ip', strTemp ) then
labIP.Caption:= INVAILDATED_ATTRIBUTE
else
labIP.Caption := strTemp;
if not xml.GetNodeAttribute( strNodePath, 'handler', strTemp ) then
labHandler.Caption := INVAILDATED_ATTRIBUTE
else
labHandler.Caption := strTemp;
if not xml.GetNodeAttribute( strNodePath, 'unit', strTemp ) then
labUnit.Caption := INVAILDATED_ATTRIBUTE
else
labUnit.Caption := strTemp;
// End .
// 開始解析 data
strNodePath := 'XMLPackage.data';
iCount := xml.GetChridNodeCount( strNodePath, 'row' );
// 逐條讀取data中的row元素
strNodePath := 'XMLPackage.data.row';
i := 0;
sgdData.RowCount := iCount + 1;
while i < iCount do
begin
xml.GetNodeAttribute( strNodePath, 'name', strTemp, i );
sgdData.Cells[0, i + 1] := strTemp;
xml.GetNodeAttribute( strNodePath, 'sex', strTemp, i );
sgdData.Cells[1, i + 1] := strTemp;
xml.GetNodeAttribute( strNodePath, 'age', strTemp, i );
sgdData.Cells[2, i + 1] := strTemp;
xml.GetNodeAttribute( strNodePath, 'duty', strTemp, i );
sgdData.Cells[3, i + 1] := strTemp;
inc( i );
end;
// End . 這里應為要讀的屬性不是太多, 如果多的話,可以考慮先在數組中存好要讀取的屬性, 通過for循環(huán)來做.
// End .
// 解析memo
strNodePath := 'XMLPackage.memo';
if xml.GetNodeAttribute( strNodePath, 'color', strTemp ) then
memo1.Color := TColor( strTemp );
if not xml.GetNodeText( strNodePath, strTemp ) then
memo1.Lines.Add( INVAILDATED_TEXT )
else
memo1.Lines.Add( strTemp );
// End .
// 解析actions
strNodePath := 'XMLPackage.actions';
if not xml.GetNodeAttribute( strNodePath, 'action', strTemp ) then
labAction.Caption := INVAILDATED_ATTRIBUTE
else
labAction.Caption := strTemp;
// End .
end;
end.
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -