admin 管理员组文章数量: 1086019
2024年3月20日发(作者:小程序制作需要审核资质吗)
一、 欢迎
本帮助文件提供从SimDesign BV的NativeXml组件的信息。
二、 购买NativeXml!
NativeXml现在是开源的,但支持是仅专门适用于购买NativeXml的客户。
您可以通过此链接购买NativeXml:
/
价格:29.95欧元
采购NativeXml的优势:
两年的通过电子邮件或特殊的“NativeXml Source”论坛支持,接收测试和修正,
并从“NativeXml Source”论坛发布
三、
使用NativeXml的例子
本章提供有关如何使用NativeXml一些例子。
3.1.例子A:XML的装载、存储和导出
这个例子显示如何加载一个XML文档,然后以可读格式导出到一个TMemo领域。
拖放一个TEdit(Edit1),TButton(Button1)和一个TMemo到你的窗体,然后
连接到下面的按钮的OnClick事件代码。填写文件名到Edit1,然后按一下按钮,您会看
到在memo控件中列出XML文件的内容。
procedure 1Click(Sender: TObject);
var
ADoc: TNativeXml;
begin
;
ADoc := ;
try
omFile();
mat := xfReadable;
:= oString;
finally
;
end;
end;
注意,mat:= xfReadable将确保该文件是以易读的形式列出(以回
车符和缩进)。
3.2.例子B:连接到节点
这个例子显示了如何访问在XML文件中的各个节点。一个节点可以从一个普通的XML
标记、注释、CDATA结构,等等东西。该示例演示如何使用一个简单的双循环列出前2层
的节点。
添加Tedit、TButton和TMemo到窗体,然后将下面的事件代码连接到按钮的
OnClick。然后在Edit1中填写文件名,按一下按钮,前两层的节点将会在memo控件中
列出。
procedure 2Click(Sender: TObject);
var
i, j: integer;
ADoc: TNativeXml;
begin
;
ADoc := ;
try
omFile();
if assigned() then with do
for i := 0 to NodeCount - 1 do begin
(Nodes[i].Name);
for j := 0 to Nodes[i].NodeCount - 1 do
(' ' + Nodes[i].Nodes[j].Name);
end;
finally
;
end;
end;
3.3.例子C:事件驱动处理
这个例子说明了NativeXml可以用一个SAX-like的方式,按顺序读文件,每当一个
节点初始化和加载时产生事件。
添加一个TButton(Button3)和一个TMemo(Memo1)到您的窗体,然后将
NativeXml包括在uses中。接下来,键入下面的k事件处理程序代码。
procedure 3Click(Sender: TObject);
var
ADoc: TNativeXml;
begin
;
ADoc := ;
try
New := DoNodeNew;
Loaded := DoNodeLoaded;
omFile();
finally
;
end;
end;
键入下面的程序代码在新的TForm1中:
function (ACount: integer): string;
begin
while ACount > 0 do begin
Result := Result + ' ';
dec(ACount);
end;
end;
procedure New(Sender: TObject; Node: TXmlNode);
begin
(Format('New : %sName=%s', [Indent(pth),
]));
end;
procedure Loaded(Sender: TObject; Node: TXmlNode);
begin
(Format('Loaded: %sName=%s, Value=%s',
[Indent(pth), , sString]));
end;
当一个节点被找到,OnNodeNew事件被触发,每当一个节点完全装载,
OnNodeLoaded事件被触发。
如果您不希望保留在内存中的XML文件的完整副本,例如,对大型XML文件,你可
以直接删除该节点,释放其内存。在这种情况下,添加以下代码到OnNodeLoaded事件:
procedure Loaded(Sender: TObject; Node: TXmlNode);
begin
(Format('Loaded: Name=%s, Value=%s', [,
sString]));
if pth > 0 then begin
(Format('Deleted: Name=%s', []));
;
end;
end;
3.4.例子D:创建一个简单的XML文件
这个例子演示如何创建一个简单的XML文件,在根节点下的一个节点,有一个属性和
子节点。我们将尝试创建这个XML文件:
下面是一个过程的代码,创建此文件,并以易读格式保存到一个文件名为
“C:”的文件:
procedure CreateXML;
var
ADoc: TNativeXml;
begin
// Create new document with a rootnode called "Root"
ADoc := Name('Root');
try
// Add a subnode with name "Customer"
with w('Customer') do begin
// Add an attribute to this subnode
WriteAttributeInteger('ID', 123456);
// Add subsubnode
WriteString('Name', 'John Doe');
end;
// Save the XML in readable format (so with indents)
mat := xfReadable;
// Save results to a file
File('c:');
finally
;
end;
end;
3.5.例子E:使用UTF8和Unicode编码的文件(支持
widestring)
这个例子显示了如何创建和加载支持widestrings的XML文件。
Xml内部编码
NativeXml可以工作在两种“模式”:要么所有的内部字符串是普通的ANSI字符串或
所有内部字符串是UTF8编码字符串。字符串类型不会改变(它仍然是“string”)。虽然
Delphi7有一种特殊类型“Utf8String”,但没有使用,以保持较低的Delphi版本的兼容性。
为了确保你的XML文档可以使用widestrings,创建它,然后直接设置属性
“Utf8Encoded”为True,如下所示:
procedure CreateXML;
var
ADoc: TNativeXml;
begin
ADoc := Name('Root');
try
// Make sure to be able to handle widestrings
8Encoded := True;
// ..add all your creation code here
finally
;
end;
end;
Xml外部编码
保存您的文档时,为外部文件或流选择适当的编码(SaveToStream也需要正确的编
码保存)。设置属性“ExternalEncoding”到其中的任何值:
se8bit:这将返回一个纯ASCII文件,所有的Unicode/widestring字符值高于$FF。
这是默认值。
seUTF16LE:这将返回一个Unicode文件的字节顺序标记$FF FE。这应该作为一个
Unicode文件的默认。
seUTF16BE:这将返回大字节(big-endian)Unicode文件的字节顺序标记$FE FF。
seUTF8:这将返回一个UTF-8编码文件的字节顺序标记$FF BB BF。UTF-8在大部
分字符为西方或拉丁语时,是更好的存储方式。然而,它可以为中文或日文等多种语言提供
更多的空间。
这里有一个关于如何设置外部编码的例子:
procedure CreateXML;
var
ADoc: TNativeXml;
begin
ADoc := Name('Root');
try
// Make sure to be able to handle widestrings
8Encoded := True;
// ..add all your creation code here
// Save to unicode
alEncoding := seUTF16LE;
ngString := 'UTF-16';
File('c:');
finally
;
end;
end;
3.5.3.添加widestrings
添加widestrings到文档很容易。每个节点的值可以设置为widestring,使用属性的
ValueAsWidestring,并可以在一般情况下使用FromWidestring函数添加widestrings。
下面的例子代码,增加了一个新的节点到根,然后设置节点名字(Name)为Aname,
节点值(value)为AValue:
procedure AddNode(ADoc: TXmlDocument; AName, AValue: widestring);
begin
with do
with NodeNew(FromWidestring(AName)) do
ValueAsWidestring := AValue;
end;
3.5.4.加载XML文件的扩展字符
当读取包含扩展字符的XML文件,重要的是在引入前设置Utf8Encoded为True,像
这样:
function CreateXMLAndLoadFromFile(AFilename: string): TNativeXml;
begin
Result := ;
8Encoded := True;
omFile(AFilename);
end;
当从一个流(例如从一个TCP连接)读入,流并不总是包含字节顺序标记(BOM)。
但是,如果流是Unicode,NativeXml将承认它,因此没有任何帮助。例如:
function CreateXMLAndLoadFromStream(S: TStream): TNativeXml;
begin
Result := ;
8Encoded := True;
omStream(S);
end;
如果你知道你的流具有一定的编码,你可以强制NativeXml使用这种编码,例如:
function CreateXMLAndLoadFromUTF8Stream(S: TStream): TNativeXml;
begin
Result := ;
8Encoded := True;
// The stream is encoded using UTF8
alEncoding := seUTF8;
omStream(S);
end;
一、
四、符号引用(Symbol Reference)
4.1.类(Classes)
nentAccess类
TComponentAccess = class(TComponent)
entState
property ComponentState;
ponentState
procedure SetComponentState(const AState: TComponentState);
eXml类
TNativeXml = class(TPersistent)
TNativeXml是XML文件的载体。创建一个TNativeXml,然后使用方法
LoadFromFile、LoadFromStream或ReadFromString加载XML文档到内存中。
或者从头开始使用w添加节点,并最终SaveToFile和SaveToStream
保存结果为一个XML文档。用属性Xmlformat = xfReadable确保缩进(易读)输
出。
arsing
property AbortParsing: boolean;
如果您使用一个SAX-like方式的OnNodeNew和OnNodeLoaded事件,并要
中止解析过程,设置AbortParsing为True。例如:
procedure XmlNodeLoaded(Sender: TObject; Node:
TXmlNode);
begin
if ( = 'LastNode') and (Sender is TNativeXml) then
TNativeXml(Sender).AbortParsing := True;
end;
Encoding
property BinaryEncoding: TBinaryEncodingType;
当调用Read和Write时,将使用什么样
的二进制编码。默认值是xbeBase64。
tString
property CommentString: UTF8String;
可以通过此属性访问上方的根元素
版权声明:本文标题:NativeXML 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.roclinux.cn/p/1710886699a578030.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
更多相关文章
es文件浏览器鸿蒙,达人教你玩应用:ES文件浏览器之文件互传(原创首发)
各种文件传输、文件管理的软件大家手里面应该都有一大堆,什么这个快传那个传输什么的,其实,我们只需要一个:ES文件浏览器。 管理本机文件自不必说了&
360浏览器下载文件成功但文件异常问题
最近遇到用360浏览器下载文件,瞬间完成。但试图打开文件却打不开。用另一台电脑下载同样地址文件,发现文件大小不一样。怀疑是系统环境出了问题。 打开360卫士,找到【断网急救
关于VSCode中下载插件后还不能运行html文件到浏览器的问题
这段时间在学习html的过程中,想用VSCode运行html代码到浏览器,查阅资料后发现需要下载open in browser插件,但下载后右键点击仍然没有open in D
使用反汇编工具IDA查看动态库中的汇编代码上下文,结合安卓系统生成的Tombstone文件,排查安卓app程序底层C++库崩溃问题
目录 1、IDA工具介绍 2、产品及问题场景描述 3、查看Tombstone文件 4、使用IDA打开.so动态库文件,查看汇编代码的上下文,到C++源码中定位发生崩溃的那行代码 4.1、使用IDA打开.so动态库文件 4.2、切
完整指南:如何将文件从 iPhone 传输到 PC
如果您是 iPhone 用户,您可能会发现自己经常需要将照片、视频和音乐等文件从手机传输到计算机。这使您可以备份数据、节省存储空间或在更大的屏幕上欣赏内容。但是,您知道完成这项任务的最简单、最快的
Flutter桌面开发 — Windows App打包以及使用Inno Setup生成.exe文件安装包
文章目录 1 打包 Flutter Windows App1.1 开发环境准备1.2 支持Windows1.3 构建Windows App2 使用Inno Setup生成.exe文件安装包2.1 Inno Setup下载2.2 Inno S
Windows 系统 DLL 文件下载
Windows 系统 DLL 文件下载 【下载地址】Windows系统DLL文件下载 Windows 系统 DLL 文件下载 项目地址: https:gitcodeopen-source-toolkitf68ef 资源
c盘满了怎么清理垃圾而不误删文件?这个方法轻松解决C盘空间不足
c盘满了怎么清理垃圾而不误删文件?这个方法轻松解决C盘空间不足 亲爱的读者们,今天我们将分享一种高效且安全的方法来解决大家常遇到的C盘空间不足问题。当您的C盘存储空间告急时,
windows服务器和本地windows共享文件(windows服务器下载文件)
1.按键windr 输入mstsc命令 2.输入远程服务器ip->点击显示选项 3.找到本地资源->点击详细信息 4.点开驱动器->找到分享的磁盘 5.然后从winds服务器复制代码到你的本地选中的磁盘 6.结束
实现windows和linux系统文件互传的最简便方法
这里介绍实现windows和linux系统文件互传的最简便方法,步骤如下: 1.下载winscp软件,地址:http:rj.baidusoft
download.js 实现txt,js文件等浏览器下载 而不是打开
现在本人正在做聊天系统,最近支持收发文件,那下载当然是不可避免的 1.第一步想的是open一个窗口下载文件但事实证明显然不合适,现在的浏览器都是会主动拦截弹窗 2.a通过
springmvc 上传下载文件问题(浏览器没有反应,下载文件无法打开)
1点击下载 浏览器没有反应 不进行下载: $("#download").bind(click, function() { 生成的文件名 var filename$("#file
一个切割PDF文件的简单的方法 -只需要chrome浏览器
只需要一个chrome浏览器。 使用chrome浏览器打开一个pdf,点击右上角的打印图标,如下图接着进入下图所示的页面,将Destination改为Save as P
删除文件显示正在使用无法删除该怎么办?
有时候当我们删除电脑程序或应用软件时,系统会提示我们文件正在使用无法删除,而我们明明是已经把这个文件关闭了的,碰到这种情况怎么办,小编以无法删除的MV
java文件不能运行_java文件不能运行怎么办?
java文件不能运行怎么办? java文件不能运行的解决办法: 1.安装好Java虚拟机后,打开桌面上“我的电脑”,点击菜单“工具”→“文件夹选项”;
一不小心给桌面粘贴了1280个文件怎么办?
搞了一下午很混乱,慌乱中不小心将一个文件夹里的1280个包粘贴在了桌面上, 完后都没有撤销粘贴这个鼠标右键功能,反而还可以再粘贴。 很懵逼,只能把桌面上
从Linux服务器下载文件到window本地电脑
1. 用sz命令 如果通过xshell连接到服务器,且为SSH方式,则可以用sz命令,直接在Linux的提示符下操作。 sz <文件路径……文件名> 此方法
vsCode 在windows环境编辑linux上的文件(SFTP)
目录 1、前言 2、SFTP原理 3、SFTP插件安装 4、SFTP插件配置 5、SFTP插件使用 1、前言 做linux开发的开发者经常面临着需要把windows上写好的程序上传到linux环境上,或者忍受
Windows系统缺少找不到libusb0.dll文件的解决办法
其实很多用户玩单机游戏或者安装软件的时候就出现过这种问题,如果是新手第一时间会认为是软件或游戏出错了,其实并不是这样,其主要原因就是你电脑系统的该dll文件丢失了或没有安装一
Windows XP系统中DLL文件缺失:当遇到DLL文件丢失时,如何确保系统的稳定运
在使用Windows XP操作系统时,偶尔会遇到与DLL文件相关的错误提示,如“找不到xxx.dll”或“xxx.dll已损坏”。这些问题可能导致某些应用程序无法正常启动或运行。本文将探讨DLL文
发表评论