中国IT动力,最新最全的IT技术教程
最新100篇 | 推荐100篇 | 专题100篇 | 排行榜 | 搜索 | 在线API文档 | 网通镜像
首 页 | 程序开发 | 操作系统 | 软件应用 | 图形图象 | 网络应用 | 精文荟萃 | 教育认证 | 硬件维护 | 未整理篇 | 站长教程
ASP JS PHP工程 ASP.NET 网站建设 UML J2EESUN .NET VC VB VFP 网络维护 数据库 DB2 SQL2000 Oracle Mysql
服务器 Win2000 Office C DreamWeaver FireWorks Flash PhotoShop 上网宝典 CorelDraw 协议大全 网络安全 微软认证
硬件维护  CPU  主板  硬盘  内存  显卡  显示器  键盘鼠标  声卡音箱  打印机  机箱电源  BIOS  网卡  C#  Java  Delphi  vs.net2005
  当前位置:> 程序开发 > 编程语言 > Delphi > Internet
Delphi6中XML文档的应用
作者:ly_liuyang 时间:2001-10-31 10:38 出处:互联网 责编:chinaitpower
              摘要:Delphi6中XML文档的应用

Delphi6 XML 文档的应用


 


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


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


已定义:


XMLDoc: TXMLDocument;


EncoderMIME: TIdEncoderMIME;


DecoderMIME: TIdDecoderMIME;


xn:IXMLNode;


f:TFileStream;


EncoderMIMEDecoderMIMEIndy控件中的Mime工具,用来把所有类型的字符串转换为MimeBase64)的ASCII码,你用其他的编码方式也可以的,比如:UUEXXE


XNXML文档的树结点。F是文件流。


首先,加载XML文档


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


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


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


  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文档的所有树结构


XMLTreeTTreeView


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

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

/ by LY http://www.99898.com/www/lysoft


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


可以从我的主页下载。

关闭本页
 
首页 | 投资与合作 | 服务条款 | 隐私政策 | 收藏本站 | 设为首页 | 新用户注册 | 免责声明 | 使用帮助
Copyright ©2005-2008 chinaitpower.com All rights reserved. www.chinaitpower.com 版权所有