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了. ...
随机推荐
- 文档对象模型操作xml文档
简介 :文档对象模型(DOM)是一种用于处理xml文档的API函数集. 2.1文档对象模型概述 按照W3C的定义,DOM是“一种允许程序或脚本动态地访问更新文档内容,结构和样式的.独立于平台和语言的规 ...
- CSS Pseudo-Element Selectors伪对象选择符
一: CSS3将伪对象选择符(Pseudo-Element Selectors)前面的单个冒号(:)修改为双冒号(::)用以区别伪类选择符(Pseudo-Classes Selectors),但以前的 ...
- 监听指定端口数据交互(HttpListenerContext )
很怀念以前做机票的日子,,,,可惜回不去 以前的项目中的,拿来贴贴 场景:同步第三方数据,监听指定地址(指定时间间隔,否则不满足,因为需要处理粘包问题,改篇未实现) 主要内容四个文件:下面分别说下每个 ...
- office2010怎么激活
软件都是不断更新换代的,像我们使用最多的Microsoft Office软件,从最初的98,2000,2003,2007,到现在的2010.但是在最初安装Office软件时,都是未激活的.下面介绍的就 ...
- 浅谈KMP算法及其next[]数组
KMP算法是众多优秀的模式串匹配算法中较早诞生的一个,也是相对最为人所知的一个. 算法实现简单,运行效率高,时间复杂度为O(n+m)(n和m分别为目标串和模式串的长度) 当字符串长度和字符集大小的比值 ...
- SGU 152.Making round
不断向下取直到,忽略的数累计到一个百分比,给当前百分比加1. 这道题要避免处理浮点数,用余数来处理,不然会wa 9 #include <iostream> #include <cma ...
- SGU 221.Big Bishops(DP)
题意: 给一个n*n(n<=50)的棋盘,放上k个主教(斜走),求能放置的种类总数. Solution : 同SGU 220,加个高精度就好了. code #include <iostre ...
- Vim简明教程【CoolShell】
vim的学习曲线相当的大(参看各种文本编辑器的学习曲线),所以,如果你一开始看到的是一大堆VIM的命令分类,你一定会对这个编辑器失去兴趣的.下面的文章翻译自<Learn Vim Progress ...
- 知识库系统confluence5.8.10 安装与破解
一直对知识库体系很在意,设想这样的场景,公司历年的研发资料只要一个搜索,相关的知识点就全部摆在面前,任君取用,想一想就无限迷人,只是从10年开始,由于种种原因,终究没能好好研究一下.最近机缘巧合,可以 ...
- .getBoundingClientRect()
.getBoundingClientRect() 该方法获得页面中某个元素的左,上,右和下分别相对浏览器视窗的位置,他返回的是一个对象,即Object,该对象有4个属性:top,left,right, ...