• 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!

  • 相关阅读:
    java简单计算器,只能鼠标点击数字
    可以掉落和滑动的星星
    servlet生成数字验证码
    web服务器底层-http请求与相应
    Codeforces 990D Graph And Its Complement 【构造】【性质】
    2018美团CodeM编程大赛 Round A Problem 2 下棋 【贪心】
    Codeforces 988F Rain and Umbrellas 【dp】
    Codeforces 988D Points and Powers of Two 【性质】【卡常】
    Codeforces 981D Bookshelves 【dp】【性质】
    POJ 2104 K-th Number 【主席树】【不带修改】
  • 原文地址:https://www.cnblogs.com/toosuo/p/1001453.html
Copyright © 2020-2023  润新知