delphi笔记之nativeXml 转
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 转的更多相关文章
- Delphi笔记(GL_Scene安装及简单使用)
		前一段时间,需要弄一个四轴的监控平台,看了匿名的上位机后,十分感兴趣.于是我也想自己也弄一个上位机来玩玩,在将串口通讯调好了以后,就开始好奇那个3D模型是怎么弄的.在网上面查找了很多资料,由于我用的是 ... 
- Delphi笔记(GL_Scene四轴飞行器模型)
		有了前的一篇做铺垫,已经简单的说了GL_Scene的下载安装和一个简单的实例制作.现在就要开始制作一个3D的模型了,具体的步骤就不再这里多说了,直接上图和代码吧! [第一版]先看一下最开始的版本吧,比 ... 
- Delphi笔记-自定义提示窗口
		unit pbHint; interface uses Windows, Controls, Forms, Graphics; type TPBHint=class(THintWindow) //要自 ... 
- 转:学习笔记: Delphi之线程类TThread
		学习笔记: Delphi之线程类TThread - 5207 - 博客园http://www.cnblogs.com/5207/p/4426074.html 新的公司接手的第一份工作就是一个多线程计算 ... 
- 转:学习笔记:delphi多线程学识
		学习笔记:delphi多线程知识 最近一直在温习旧的知识,刚好学习了一下Java的线程安全方面的知识,今天想起之前一直做的Delphi开发,所以还是有必要温习一下,看看这些不同的编程语言有什么不同之处 ... 
- Delphi基础语法的学习笔记和注意事项总结
		以下是我在自学Delphi的时候,对一些注意点的简单总结,并没有什么系统性可言,只是一个学习时顺手记下的笔记,主要为了当时加深对知识的印象,并没有希望能在以后的复习和使用Delphi中有什么多大的参考 ... 
- Delphi使用NativeXml访问XML文件
		Delphi使用NativeXml访问XML文件 1.创建XML文件var Doc: TNativeXml;//声明上下文对象var filepath:string;//文件路径DOC:=TNativ ... 
- Delphi   NativeXml用法攻略
		NativeXml用法攻略 NativeXml可以在官网上下载,下载后将文件夹放在指定地方,打开DELPHI在其环境变量中引用NativeXml路径,然后在程序中引用NativeXml单元,我们就可以 ... 
- Delphi  NativeXml用法攻略  转
		NativeXml可以在官网上下载,下载后将文件夹放在指定地方,打开DELPHI在其环境变量中引用NativeXml路径,然后在程序中引用NativeXml单元,我们就可以使用NativeXml了. ... 
随机推荐
- Java_Activiti5_菜鸟也来学Activiti5工作流_之入门简单例子(一)
			// VacationRequest.java /** * author : 冯孟活 ^_^ * dates : 2015年9月1日 下午10:32:58 * class : 演示简单的公司请假流程 ... 
- 第一篇、Apache和Tomcat的整合
			1.web架构 首先上图,解释web通用架构 通常情况下分为三大块 : ★ Web server : 通常情况下由 Apache Http Server . IBM Http Server .I ... 
- asp.net mvc4 使用java异步提交form表单时出现[object object] has no method ajaxSubmit
			最近接手了一个单子,说大不大,只是功能不少,开发过程中遇到该问题 先看脚本截图: 本以为是笔误,哪儿写错了,可是看来看去,都没发现有不合适的地方,对比过网上很多代码,都差不多,于是各种方式的,各种原因 ... 
- 解决UITabeleViewCell的分割线不能铺满问题
			-(void)viewDidLayoutSubviews { if ([self.tableView respondsToSelector:@selector(setSeparatorInset:)] ... 
- sublime text  几种常用插件
			1.docblockr //文档注释 使用 /** +tab 在函数前就可以 2.SublimeLinter 代码校验插件,支持多种语言,这个是主插件,如果想检测特定的文件需要单独下载 3 ... 
- C++中new的用法
			new int;//开辟一个存放整数的存储空间,返回一个指向该存储空间的地址(即指针) new int(100);//开辟一个存放整数的空间,并指定该整数的初值为100,返回一个指向该存储空间的地址 ... 
- SGU 143.Long Live the Queen(女王万岁)
			时间限制:0.25s 空间限制:4M 题意: 有n(n<=16000)个小镇,每两个小镇有且仅有一条路径相连.每个小镇有一个收益x(-1000<=x<=1000). 现在要求,选择一 ... 
- Float之谜
			先来看几个例子: public class Thirtyfirst1{ public static void main(String[] args){ int i = 2000000000; int ... 
- TestNG Listener
			常用接口 IExecutionListener 监听TestNG运行的启动和停止. IAnnotationTransformer 注解转换器,用于TestNG测试类中的注解. ISuiteList ... 
- 兼容IE6的页面底部固定层CSS代码
			有时候当我们需要把一个元素固定在页面的某个部位,一般都是用css中的“position:fixed;”方法来解决,但是IE6不支持fixed,所以今天分享一个兼容IE6的页面底部固定层CSS代码.如下 ... 
