这是一个xml转成access数据的demo
有些还没整理完。希望高手改善!
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
ComCtrls, ExtCtrls, StdCtrls, Grids, Menus, Db, ADODB;
type
TForm1 = class(TForm)
Panel1: TPanel;
MainMenu1: TMainMenu;
open_N1: TMenuItem;
daoru_N2: TMenuItem;
select_N3: TMenuItem;
OpenDialog1: TOpenDialog;
SaveDialog1: TSaveDialog;
Edit1: TEdit;
Edit2: TEdit;
Memo1: TMemo;
ADO: TADOConnection;
ADOQuery1: TADOQuery;
Memo2: TMemo;
procedure FormCreate(Sender: TObject);
procedure daoru_N2Click(Sender: TObject);
private
{ Private declarations }
public
procedure WriteRecordfields(nodesname,nodesvalue:string ;const n:integer); //形成sql插入语句
procedure create_table(nodesname:string;const n:integer);
function GetTempPathFileName: string;
procedure lvadd(const path1:string);
procedure readxml(const filename:string);
function create_mdb(const fnames:string):boolean;
function CompactDatabase(AFileName:string):boolean;
procedure conning_mdb(sql:string);
procedure bianli_create(const filename:string);
{ Public declarations }
end;
var
Form1: TForm1;
path:string;
fname:string;
strtxt :Tstringlist;
implementation
uses nativexml,Comobj, SYSTEMD7;
{$R *.DFM}
procedure TForm1.lvadd(const path1: string);// 获取XML目录
var
// i:integer;
Sr:TsearchRec;
// findNode:TTreeNode;
// name:Array[n] of string;
begin
Path:=path1;
//stringgrid1.rowcount:=0;
if Path[length(path)]<>'/'then
path:=path+'/*.*'
else
path:=path+'*.*';
//with stringgrid1 do
// begin
if findfirst(path,faanyfile,sr)=0 then
begin
repeat
if (sr.Attr and fadirectory) =sr.Attr then
if (sr.name='.') or (sr.name='..') then
begin
continue;
end
else
begin
path:=path1+sr.Name;
readxml(path);
end;
path:=path1+sr.Name;
readxml(path);
until findnext(sr)<>0;
findclose(sr);
end;
//end;
end;
procedure TForm1.readxml(const filename: string); //遍历读取节点值
var
ADoc : TNativeXml;
LRootNode : TXmlNode;
procedure ProcessNode(ANode: TXmlNode);
begin
Memo1.Lines.Add(Format('%s=%s', [ANode.Name, ANode.ValueAsString])