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. hibernate中有时候复杂删除有时候可以拆分为两个语句

    这个demo是使用原生的sql语句写的,也就是没有调用我在struts中已经写好的公用类common中的增删改查功能,所以要开启事务

  2. IK分词算法设计总结

    IK分词算法设计思考 加载词典 IK分词算法初始化时加载了“敏感词”.“主词典”.“停词”.“量词”,如果这些词语的数量很多,怎么保证加载的时候内存不溢出 分词缓冲区 在分词缓冲区中进行分词操作,怎么 ...

  3. selenium+eclipse+python环境

    1.下载并安装jdk,配置环境变量: 2.下载并安装python,配置path系统环境变量:D:\Program Files\python34: 3.安装selenium,在安装好的python路径D ...

  4. Netbeans IDE配置

  5. svn的初级使用

    首先呢 你需要下载一个软件  比如说是 Cornerstone. 进行安装好之后 然后 然后输入账号密码 就可以了 然后去xcode去进行相关的配置 点击第二个进入 偏好设置 点击最下边的+ 点击第二 ...

  6. zoj 3209.Treasure Map(DLX精确覆盖)

    直接精确覆盖 开始逐行添加超时了,换成了单点添加 #include <iostream> #include <cstring> #include <cstdio> ...

  7. POJ 2112.Optimal Milking (最大流)

    时间限制:2s 空间限制:30M 题意: 有K台挤奶机(编号1~K),C头奶牛(编号K+1~K+C),给出各点之间距离.现在要让C头奶牛到挤奶机去挤奶,每台挤奶机只能处理M头奶牛,求使所走路程最远的奶 ...

  8. SWFUpload(转载)

    网上的例子介绍的文档真的很多.下面简单介绍一下 SWFUpload的文件上传流程是这样的: 1.引入相应的js文件 2.实例化SWFUpload对象,传入一个配置参数对象进行各方面的配置. 3.点击S ...

  9. JQUERY、AJAX双击DIV,直接修改DIV内的内容

    最近在做后台功能开发的时候,用到对排序字段的修改,感觉只为了修改一个排序值,而要重新进入编辑页比较麻烦,于是自己动手写…… 最近在做后台功能开发的时候,用到对排序字段的修改,感觉只为了修改一个排序值, ...

  10. WebDriverWait自定义等待事件

    1. webDriverWait自定义WebElement类事件 public WebElement waitForElementVisible(WebDriver driver,final By l ...