Delphi6 中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的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文件
可以从我的主页下载。

