分享
 
 
 

Delphi6/7 中XML 文档的应用

王朝delphi·作者佚名  2006-01-08
窄屏简体版  字體: |||超大  

Delphi6/7 中XML 文档的应用

XML文档是新一代的Web数据格式。它可以用树的形式储存一切数据。

下面介绍一下TXMLDocument控件的一些用法:

已定义:

XMLDoc: TXMLDocument;

EncoderMIME: TIdEncoderMIME;

DecoderMIME: TIdDecoderMIME;

xn:IXMLNode;

f:TFileStream;

EncoderMIME和DecoderMIME是Indy控件中的Mime工具,用来把所有类型的字符串转换为Mime(Base64)的ASCII码,你用其他的编码方式也可以的,比如:UUE,XXE。

XN是XML文档的树结点。F是文件流。

首先,加载XML文档

xmldoc.LoadFromFile(‘XML文档的文件名');

xmldoc.Active:=true; //使XML文档变为活动

再次,定位Xn在XML文档中的位置(假设是的二层的第四个节点)

xn:=xmldoc.Node;

xn:=xn.ChildNodes.Nodes[1]; //节点数是从零开始的,所以要减一

xn:=xn.ChildNodes.Nodes[3];

接着,

增加下一级节点

xn:=xn.AddChild(‘新的节点名字’)

xn.Text:=’节点的文本内容’

xn.Attributes['节点的第一个属性']:=’属性值’

xn.Attributes['节点的第二个属性']:=’属性值’

修改节点,(节点的名字是不能改的)

xn.Text:=’新的文本内容’

xn.Attributes['节点的第二个属性']:=’ 新的属性值’

删除节点Xn

xn.ParentNode.ChildNodes.Delete(xn.ParentNode.ChildNodes.IndexOf(xn));

利用Xn.Text存放文件,

f:=TFileStream.Create('要存放的文件名',fmOpenRead);

xn.Text:=EncoderMime.Encode(f); //转换格式,文件编码

f.Free;

解出Xn.Text中的文件,

f:=TFileStream.Create(‘目标文件名’,fmCreate);

DecoderMime.DecodeToStream(xn.Text,f);

f.Free;

最好利用Xn.attribute来增加一个属性来表示文件的编码方式,比如

xn.Attributes['Type']='Base64'

这样改上面的两个片段为:

xn.Attributes['Type']:='Base64';

f:=TFileStream.Create('要存放的文件名',fmOpenRead);

xn.Text:=EncoderMime.Encode(f);

f.Free;

if xn.IsTextElement //Xn中存在Text

then if xn.HasAttribute('Type') then //Xn中存在属性’Type’

if xn.Attributes['Type']='Base64' then

begin

f:=TFileStream.Create(‘目标文件名’,fmCreate);

DecoderMime.DecodeToStream(xn.Text,f);

f.Free;

end;

最后给出一个利用TTreeView来显示XML文档的所有树结构

XMLTree是TTreeView类

procedure TForm1.ReadXMLTree(RootTreeNode:TTreeNode; XMLTreeNode:IXMLNode);

var i:integer; c:TTreeNode;

begin

for i:=0 to XMLTreeNode.ChildNodes.Count-1 do

begin

c:=xmltree.Items.AddChild(RootTreeNode,XMLTreeNode.ChildNodes.Nodes[i].NodeName);

ReadXMLTree(c,XMLTreeNode.ChildNodes.Nodes[i]);

end;

end;

使用方法

ReadXMLTree(nil,xmldoc.Node);

当然要先加载XML文档 J ^_^

至于使用XML文档作为In-memory数据库就要用Delphi6/7的XML Mapping Tool了,先建立一个最简单的XML文档,再用MappingTool生成.XTR文件,用TXMLDataSetProvider作为数据提供者,TdataSet连接,搞个TTable就可以把XML作为数据库用了,详细的请看Delphi6/7的Demos目录下的Internet\XMLTransformProvider!

-------------------------------------------Power by Liu Yang 2002-2-8

/ by LY http://lysoft.7u7.net or http://liuyang.7i24.com

一个利用XML的例子:LY FTP Explorer中的Site Manager文件

可以从我的主页下载。

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有