2,497
社区成员
发帖
与我相关
我的任务
分享
<?xml version="1.0" encoding="GB2312" ?>
<root>
<Dep>
<ID>1</ID>
<Dep>技术支持</Dep>
<ID>2</ID>
<Dep>开发部</Dep>
<ID>3</ID>
<Dep>客服部</Dep>
</Dep>
</root>
procedure DealXml(strFileName:string);
var
//根结点和一级子结点
node,subnode :IXMLNode;
//一级和二级子结点列表
nodelist,subnodelist: IXMLNodeList;
//一级和二级子结点的数目
subCount,subsubCount: integer;
j, k:integer;
//记录条数
RecCount: Integer;
//插入数据库的SQL语句
insertSql: string;
errstr: string;
begin
XMLDoc.LoadFromFile(strFileName);
XMLDoc.Active := true;
//根结点
node := XMLDoc.DocumentElement;
//如果只有根结点的子结点数量不对,说明文件不对
subCount := node.ChildNodes.Count;
//需要下载的文件数量是3个,不需要下载的在xml中没有节点
if subCount<>4 then
begin
WriteLog('下载的xml文件不正确');
exit;
end;
nodelist := node.ChildNodes;
subnode := nodelist.Nodes[0];
subsubcount := subnode.ChildNodes.Count;
//dep
if subsubcount > 0 then //如果有记录,就更新到数据库
begin
with frmMain.qry do
begin
sql.clear;
sql.add('DELETE FROM Dep');
ExecSQL;
end;
recCount := subsubcount div 2;
subnodelist := subnode.ChildNodes;
k := 0;
for j:=0 to recCount-1 do
begin
insertSql := 'INSERT INTO Dep(ID, Dep) VALUES ( ';
insertSql := insertSql + subnodelist.Nodes[k].Text + ',';
k := k+1;
insertSql := insertSql +'"'+subnodelist.Nodes[k].Text+'"' + ')';
k:=k+1;
with frmMain.qry do begin
sql.Clear;
sql.add(insertsql);
//ShowMessage(insertSql);
ExecSQL;
end;
end;
end;
end;
&转化成&
<?xml version="1.0" encoding="gb2312"?>