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.

posted on 2020-08-17 14:12  天上星  阅读(442)  评论(0编辑  收藏  举报

导航