请高手们最好能给我一个例程。。万分感谢!
解决方案 »
- 大家帮忙看看这个控件怎么实现?高分求助
- 请进来坐坐!
- 如何将一个字符串转换为整形数组,经运算后再转换回字符串?
- 请问我已经结帖的上半年的帖子怎么没有了???我到哪才能找到???
- 救火啊!
- 难题,如何取出webbrowes控件中的一个网页。。。。。。。。分不够再加
- 程序在关闭时提示无效的窗口句柄,"1400 system error ",请问怎么回事?各位大侠,救救小第,100分相送
- 建议大家不要买这本书!!!!!!!!!
- delphi中DBgried如何给选中框中的内容修改颜色?想通过一个button键来实现。请问
- 我对数据的查询结果进行处理,用 query1.next 遍历结果,太慢了,哪位可指点指点?
- ShellExecute发Email,邮件内容怎么无法换行?
- 如何将Image1中的aa.jpg图像旋转90度?
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目录下的Internet\XMLTransformProvider!