admin 管理员组

文章数量: 1184232


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文件:

John Doe

下面是一个过程的代码,创建此文件,并以易读格式保存到一个文件名为

“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;

可以通过此属性访问上方的根元素

本文标签: 节点 属性 转换 文件 类型

更多相关文章

两台电脑用一根网线连接组成局域网共享传输文件_网站连接两台电脑传文件

10天前

两台电脑传输文件有很多方法,小的qq就解决了,稍微大点的可以通过安装的快传软件来达到目的,当然用u盘也是可以的。这都还好,那如果传输文件数量多或者大文件(超过百G的)的时候该怎么办呢,硬盘是一种,但因为是传输的中间介质,所以比较麻烦,

R3nzSkin常见问题解答:解决注入失败、游戏崩溃等10大痛点

10天前

R3nzSkin常见问题解答:解决注入失败、游戏崩溃等10大痛点 R3nzSkin作为一款热门的《英雄联盟》皮肤修改工具,帮助玩家自定义游戏体验。但在使用过程中,许多用户会遇到注入失败、游戏崩溃等问题。本文汇总了10个最常见的

Windows虚拟机中镜像文件_虚拟机镜像iso文件

10天前

访问微软官方Windows 10下载页面:https: 点击“立即下载工具”按钮,下载 。这是一个小型应用程序,用于帮助用户创建Windows 10安装介质。 运

宽带连接网页故障解析

10天前

宽带已连接网页打不开的若干原因和处理办法一、网络设置的问题 这种原因比较多出现于需要手动指定IP、网关、DNS服务器联网方式下,及使用代理服务器上网的。仔细检查计算机的网络设置。 二、DNS服务器的问题 当IE无法浏览网

cf-blue-green-deploy 项目使用教程

10天前

cf-blue-green-deploy 项目使用教程 1. 项目的目录结构及介绍 cf-blue-green-deploy├── acceptance├── coverage├── fixtures├──

迅雷极速版任务出错的解决办法(亲测可用)_极速版报错任务出错的处理方法

10天前

最近迅雷极速版bt下载许多任务出现-任务出错,通过修改hosts文件可以绕过迅雷的解析服务器,方法如下:windows系统进入目录 C:WindowsSystem32driversetc,

解读Autorun.inf病毒和autorun.inf_光盘里有autorun exe

10天前

这几天我的机子病毒大暴发,其中有一种病毒就是关于autorun.inf的。和它一起运行的是sxs.exe文件。它在每个驱动盘下都有这两个文件,并且文件夹选项里显示所有隐藏文件和文件夹选中后又会被改回去,很苦恼啊!于是上网查了一些这方面

dos下删除病毒autorun.inf

10天前

今天有个同学的电脑中病毒了,但是电脑里有很多重要的东西,中的病毒式autorun.inf 非常顽固的老病毒,只要删除不干净,就会立即快速的复制,把电脑里的东西都给植入这种文件,这种文件一般是在根目录下,在打开每个驱动盘的时候,病毒就

删除autorun.inf病毒的批处理 简单三招预防_autoruninf批处理

10天前

选择“显示隐藏文件”这一选项后,发现U盘有个文件闪出来一下就马上又消失了,而再打开文件夹选项时,发现仍就是“不显示隐藏文件”这一选项。而且刚发现点击C、D等盘符图标时会另外打开一个窗口!这就是臭名昭著的autorun.inf病毒,下面

彻底解决网页后台图片不显示问题的完整方案

9天前

简介:在网页开发中,图片无法正常显示是常见但棘手的问题,可能由URL错误、MIME类型配置不当、浏览器缓存、兼容性问题或服务器设置等多种原因引起。本文结合“ie.reg”文件线索,重点分析与Internet Explorer浏览器相关

梦幻西游手游详细图文架设教程_手游客户端假设怎么设置

9天前

前言 提到梦幻西游,大家肯定不陌生。在 2001 年正式上线,它成为了很多人的第一款网游,陪伴了一代又一代的玩家成长。没错,今天要架设的就是梦幻西游手游! 本文讲解梦幻西游手游架设教程,经典的职业、音乐、场景、玩法,就

一学就会:EasyRecovery简易指南帮你快速恢复误删的文件

9天前

简介:EasyRecovery是一款高效的文件恢复软件,它帮助用户恢复因误删除、格式化或其他原因丢失的文件。该工具扫描未被覆盖的硬盘空间,找回丢失文件的元数据和内容。它支持包括硬盘、外部硬盘、USB驱动器和SD卡在内的多种存储设备,并

EasyRecovery数据恢复软件教学视频,从零开始,助你轻松掌握数据保护

8天前

1.介绍 EasyRecovery 是一款操作安全、价格便宜、用户自主操作的数据恢复软件,它支持从各种各样的存储介质恢复删除或者丢失的文件,其支持的媒体介质包括:硬盘驱动器、光驱、闪存、硬盘、光盘、U盘移动硬盘、数码相机、手

深度剖析:小米AX1800路由器SSH与IPv6网关设置的实操技巧

8天前

WiFI6版本弃子,小米路由器AX1800,通过配置文件永久开启ssh和ipv6传入网关设置作为小米路由器的第一款 wifi6路由器(ax.),最近一次的更新是2021年底,版本为

狂怒2启动失败?WPCAP.DLL错误?一步步轻松搞定!

8天前

遇到《狂怒2》(Rage 2)游戏提示“wpcap.dll”文件丢失的问题,意味着您的系统中可能缺少或损坏了用于网络抓包和监控的WinPcap或其替代品Npcap的动态链接库文件。以下是解决此问题的步骤: 1. 安装或重新安装

WPCAP.dll失踪?修复手册,轻松搞定电脑故障!

8天前

在计算机使用过程中,不少用户可能会遇到wpcap.dll文件丢失的问题,这通常会导致依赖于该文件的应用程序无法正常运行,如Wireshark网络封包分析器等。wpcap.dll是WinPcap套件的一部分,该套件为Windows操作系

菜鸟也能学会!Windows 10系统还原轻松指南

8天前

有很多网友发现电脑系统出现问题后,知道可以通过重装系统来解决问题,但是如果不知道怎么重装系统或者是觉得重装太麻烦,还可以通过还原电脑系统解决,那么电脑系统还原怎么操作,今天小编就和大家说说还原电脑系统的具体操作方法。 更多

自动解压秘籍:Python帮你搞定各种压缩文件

8天前

压缩文件是我们在使用电脑时经常会遇到的。压缩文件并不只有一种压缩模式。平常我们都是通过安装一些解压缩软件来打开这些不同的压缩文件。今天我们来谈一谈,如何用Python解压几种常见类型的压缩文件。一、需求描述编写

让自动解压成为你解压Flash中心文件的秘密武器!

8天前

压缩文件是我们在使用电脑时经常会遇到的。压缩文件并不只有一种压缩模式。平常我们都是通过安装一些解压缩软件来打开这些不同的压缩文件。今天我们来谈一谈,如何用Python解压几种常见类型的压缩文件。一、需求描述编写

当Windows系统出问题时,如何借助DISM挂载映像进行修复,让电脑焕然一新?

8天前

如何使用DISM对Windows系统映像进行修复在前些天我更新电脑驱动的时候,更新程序报错了。我检查后发现是系统映像完整性的问题。在我解决完问题后,我决定把这个解决的过程记录下来,希望能帮到别人。 那么正文开始

发表评论

全部评论 0
暂无评论