• TNativeXML用法(轉)


    1.https://www.cnblogs.com/hejoy91/archive/2013/05/29/3105878.html

    NativeXml可以在官网上下载,下载后将文件夹放在指定地方,打开DELPHI在其环境变量中引用NativeXml路径,然后在程序中引用NativeXml单元,我们就可以使用NativeXml了。

    NativeXml的方法属性:

    xml:= TNativeXml.Create(Self);//创建

    xml.XmlFormat        := xfReadable; //格式

    //xml.EncodingString   := 'UTF-8';//编码

    xml.ExternalEncoding := seUTF8;

    xml.LoadFromFile();//从文件夹中导入XML文件

    xml.SaveToFile();//XML文件保存到文件夹

    节点的方法属性:

    xml.Root;//XML文件的根节点,注意一切都从根开始

    xml.Root.NodeByName(‘节点名’);//通过节点名获得节点

    xml.Root.Attributes;//节点的属性对象

    xml.Root.ChildContainers;//节点的子节点对象

    xml.Root.NodeNew();//增加新的子节点

    xml.Root.Name;//节点名

    xml.Root.Value;//节点值

    实例创建新的xml文件:

    复制代码
    procedure TForm1.btn1Click(Sender: TObject);
    var xml:TNativeXml;
        node:TXmlNode;
        fname:string;
        root:TXmlNode;
    begin
      xml:=TNativeXml.CreateName('root');
      try
        xml.XmlFormat        := xfReadable; //格式
        xml.ExternalEncoding := seUTF8;
    
        fname:= ExtractFilePath(Application.ExeName)+ 'tt.xml';
        if not FileExists(fname) then
        begin
          FileClose(FileCreate(fname));
        end;
        root:=xml.Root;
        node:=root.NodeNew('n1');
        node.Value:='testV';
        node.AttributeAdd('p1','v1');
      finally
        xml.SaveToFile(fname);
        xml.Free;
      end;
    end;

    2.https://www.bbsmax.com/A/MAzA6D0OJ9/

    1.创建XML文件
    var Doc: TNativeXml;//声明上下文对象
    var filepath:string;//文件路径
    DOC:=TNativeXml.CreateName('root');
    Doc.EncodingString:='gb2312';
    DOC.XmlFormat:=xfReadable;
    DOC.SaveToFile(filepath);

    2.创建新节点
    //先在根节点下创建一个节点名为userInfo的节点,然后给该节点写一个属性为loginname,属性值为ceshiyong
    DOC.Root.NodeNew('userInfo').WriteAttributeString('loginname','ceshiyong');

    3.更新节点
    with Doc.Root.NodeByName('sysconfig').NodeByName('netconfig').NodeByName('webserviceconfig') do
        begin
            WriteString('serverurl',model.serverurl);
            WriteString('serverport',model.serverport);
        end;
    DOC.SaveToFile(filepath);

    4.在父节点下创建子节点
    //在根节点下查找属性loginname='ceshiyong'节点,并在该节点下创建节点名为baseinfo节点   
    with Doc.Root.NodeByAttributeValue('userInfo','loginname','ceshiyong').NodeNew('baseinfo') do
        begin
            WriteString('id','');
            WriteString('name','');
            WriteString('loginname','');
            WriteString('shenfen','');
            WriteString('nickname','');
            WriteString('email','');
            WriteString('qq','');
            WriteString('mobile','');
            WriteString('officephone','');
            WriteString('HomePhone','');
            WriteString('Address','');
            WriteString('birthday','');
            WriteString('sex','');
        end;

    5.节点查找(查找多个节点)
    var AList: TXmlNodeList;
    ALIST:=TXmlNodeList.Create;
    Doc.Root.FindNodes('userInfo',AList);

    其它:

      在NativeXML的源文件中,NativeXmlObjectStorage.pas中有TsdXmlObjectWriter和TsdXmlObjectReader类,可以方便的把序化和反序化比如CreateComponent或ReadComponent函数,具体可以查看其Demo.

  • 相关阅读:
    Digital Square(hdu4394)搜索
    Substrings(hdu1238)字符串匹配
    Graveyard(poj3154)
    数据库的范式理论
    模和除
    You can Solve a Geometry Problem too (hdu1086)几何,判断两线段相交
    对vector等STL标准容器进行排序操作(转!)
    0 or 1(hdu2608)数学题
    LintCode 4.丑数
    LintCode 9.Fizz Buzz问题
  • 原文地址:https://www.cnblogs.com/yagzh2000/p/13517331.html
Copyright © 2020-2023  润新知