RSS
热门关键字:  数据挖掘  数据仓库  人工智能  搜索引擎  数据挖掘导论

Delphi6中XML文档的应用

来源: 作者:unkonwn 时间:2005-09-04 点击:

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目录下的InternetXMLTransformProvider!

-------------------------------------------Power by Liu Yang 2002-2-8 数据挖掘研究院

/ by LY http://www.99898.com/www/lysoft 数据挖掘研究院


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

数据挖掘研究院


可以从我的主页下载。 数据挖掘研究院

最新评论共有 0 位网友发表了评论
发表评论
评论内容:不能超过250字,需审核,请自觉遵守互联网相关政策法规。
匿名?