delphi笔记之nativeXml

 
使用 CreateName 建立可直接指定根节点的名称
var
XmlDoc: TnativeXml;
Node:TxmlNode;

Begin

XmlDoc := TNativeXml.CreateName('Data');  //创建根节点的语法

XmlDoc.XmlFormat := xfReadable;

添加节点有以下几种方法:

Node:=xmlDoc.Root.NodeNew(‘BasicDataNo’);

Node.value:=’1’;

XmlDoc.Root.NodeNew(‘name’).value:=’sam’;

xmlDoc.Root.WriteString(‘sex’,’male);

xmlDoc.Root.NodeNew('Address').WriteString('City', '广州');//<Address><City>广州</City></Address>

还有可以创建相应类型的方法:WriteFloat()、WriteDateTime()、WriteHex()、WriteBool()...
 
Node:=xmlDoc.NodeNew(‘item’);
Node.writeInteger(‘age’,23);
xmlDoc.Root.NodeAdd(node);
 
 
XmlDoc.NodeNew('BasicData', [
   XmlDoc.NodeNewText('FirstName', 'John'),
   XmlDoc.NodeNewText('LastName', 'Doe'),       
 XmlDoc.NodeNewInt('Age', 26)
  ])
添加属性:
  node := xml.Root.NodeNew('item'); 
  node.AttributeAdd('ID', '1'); 
  node.AttributeAdd('age', '11'); 
  node.Value := '张三'; 
 
  node := xml.NodeNewTextAttr('item', '张三', [xml.AttrText('ID', '1'), xml.AttrInt('age', 11)]); 
  xml.Root.NodeAdd(node); 
 
添加注释:
  node := xml.NodeNewTextType('注释名称', '注释内容', xeComment);
  xml.Root.NodeAdd(node);
添加CDATA内容
  node.NodeAdd(xml.NodeNewTextType('DataName', 'XXXXXXXXXXXX', xeCData));

NativeXml 读取

NativeXml打开xml文本

Var

Xml:TnativeXml;

Begin

Xml:=TnativeXml.Create(nil);

Xml.loadformFile(‘xml_file_path’);

End;

读取declaration

declaration: TsdDeclaration;

declaration := xml.RootNodes[0] as TsdDeclaration;

ShowMessageFmt('%s, %s', [declaration.Version, declaration.Encoding]);  //1.0, UTF-8

xml.RootNodes[1]代表根节点,与xml.Root相同
 
xml.Root.Name:根节点名称
xml.Root.NodeCount:根节点子节点的总数
xml.Root.WriteToString读取根节点下的所有内容
xml.Root[0]:第一个子节点
 
节点信息的读取
node:TxmlNode;
node:=xml.Root[0];
node.name
node.value
node.Attributes[0].Name;
node.Attributes[0].Value;
node.Attributes[0].WriteToString
node.AttributeByName['ID'].Value
node.AttributeValueByName['ID']
 
 
  node := xml.Root; 
  ShowMessage(node.ReadString('item'));       //张三 
  ShowMessage(node.FindNode('item').Value);   //张三 
  ShowMessage(node.NodeByName('item').Value); //张三 
  //node.NodesByName(); 用法同 FindNodes 
 
  nodeList := TsdNodeList.Create(False); 
  node.FindNodes('item', nodeList); 
  for i := 0 to nodeList.Count - 1 do 
  begin 
    ShowMessage(nodeList[i].Value); //张三/李四/王五 
  end; 
  nodeList.Free; 
  // 
  for i := 0 to node.NodeCount - 1 do 
  begin 
    ShowMessage(node[i].Value);     //张三/李四/王五 
  end; 
 
 
其他操作:
插入、删除
  xml.Root.NodeInsert(1, xml.NodeNewText('item', '赵六')); 
  xml.Root.NodeDelete(xml.Root.NodeCount - 1); 
 xml.Root.NodeRemove(xml.Root[0]); 
交换
xml.Root.NodeExchange(0, 1); 
提取:
  node := xml.Root.NodeExtract(xml.Root[1]); 
搜索与创建
node := xml.Root.NodeFindOrCreate('item'); 
Clear操作
node := xml.Root[0]; 
node.Clear; <item/> //清除节点内容
xml.Root.DeleteEmptyNodes; //清除空节点
xml.Root.Clear; <list/> //清除Root下的内容
xml.Clear; 将xml内容清除

delphi笔记之nativeXml 转的更多相关文章

  1. Delphi笔记(GL_Scene安装及简单使用)

    前一段时间,需要弄一个四轴的监控平台,看了匿名的上位机后,十分感兴趣.于是我也想自己也弄一个上位机来玩玩,在将串口通讯调好了以后,就开始好奇那个3D模型是怎么弄的.在网上面查找了很多资料,由于我用的是 ...

  2. Delphi笔记(GL_Scene四轴飞行器模型)

    有了前的一篇做铺垫,已经简单的说了GL_Scene的下载安装和一个简单的实例制作.现在就要开始制作一个3D的模型了,具体的步骤就不再这里多说了,直接上图和代码吧! [第一版]先看一下最开始的版本吧,比 ...

  3. Delphi笔记-自定义提示窗口

    unit pbHint; interface uses Windows, Controls, Forms, Graphics; type TPBHint=class(THintWindow) //要自 ...

  4. 转:学习笔记: Delphi之线程类TThread

    学习笔记: Delphi之线程类TThread - 5207 - 博客园http://www.cnblogs.com/5207/p/4426074.html 新的公司接手的第一份工作就是一个多线程计算 ...

  5. 转:学习笔记:delphi多线程学识

    学习笔记:delphi多线程知识 最近一直在温习旧的知识,刚好学习了一下Java的线程安全方面的知识,今天想起之前一直做的Delphi开发,所以还是有必要温习一下,看看这些不同的编程语言有什么不同之处 ...

  6. Delphi基础语法的学习笔记和注意事项总结

    以下是我在自学Delphi的时候,对一些注意点的简单总结,并没有什么系统性可言,只是一个学习时顺手记下的笔记,主要为了当时加深对知识的印象,并没有希望能在以后的复习和使用Delphi中有什么多大的参考 ...

  7. Delphi使用NativeXml访问XML文件

    Delphi使用NativeXml访问XML文件 1.创建XML文件var Doc: TNativeXml;//声明上下文对象var filepath:string;//文件路径DOC:=TNativ ...

  8. Delphi NativeXml用法攻略

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

  9. Delphi NativeXml用法攻略 转

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

随机推荐

  1. Array,ArrayList 和 List<T>的选择和性能比较.

    Array Class Provides methods for creating, manipulating, searching, and sorting arrays, thereby serv ...

  2. ajax xmlhttp下open方法POST、GET参数的区别

    1. get是从服务器上获取数据(会暴露客户端ip),post是向服务器传送数据.2. get是把参数数据队列加到提交表单的ACTION属性所指的URL中,值和表单内各个字段一一对应,在URL中可以看 ...

  3. JavaScript Date(日期) 对象

    日期对象用于处理日期和时间. 如何使用 Date() 方法获得当日的日期. getFullYear()使用 getFullYear() 获取年份. getTime()getTime() 返回从 197 ...

  4. gzip命令

    http://www.cnblogs.com/peida/archive/2012/12/06/2804323.html 减 少文件大小有两个明显的好处,一是可以减少存储空间,二是通过网络传输文件时, ...

  5. mysql数据类型——枚举enum(‘F’,'M')

    ENUM(“value1”,“value2”,...) 说明:枚举,列值可赋予值列表中的某个成员 允许的属性:除通用属性外无其他属性 缺省值:如果列可为NULL,则为NULL:如果列为NOTNULL, ...

  6. MBR

    Mbr位于磁盘的0柱面,0磁头,1扇区. MBR       有三部分构成,主引导程序,硬盘分区表DPT和,硬盘的有效标志55AA.在512个字节的主引导扇区里. 主引导程序占446个字节,dpt占6 ...

  7. #module-django.db.models

    Models A model is the single, definitive source of information about your data. It contains the esse ...

  8. C# 改变图片尺寸(压缩),Image Resize

    /// <summary> /// Resize image with a directory as source /// </summary> /// <param n ...

  9. 实现OC与JS的交互

        oc-->js stringByEvaluatingJavaScriptFromString,其参数是一NSString 字符串内容是js代码(这又可以是一个js函数.一句js代码或他们 ...

  10. Gridview BottomPagerRow添加自定义控件

    pager.ascx public partial class pager : System.Web.UI.UserControl{ } .aspx protected pager ctl; prot ...