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

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;

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

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

更多相关文章

es文件浏览器鸿蒙,达人教你玩应用:ES文件浏览器之文件互传(原创首发)

1月前

各种文件传输、文件管理的软件大家手里面应该都有一大堆,什么这个快传那个传输什么的,其实,我们只需要一个:ES文件浏览器。 管理本机文件自不必说了&

360浏览器下载文件成功但文件异常问题

1月前

最近遇到用360浏览器下载文件,瞬间完成。但试图打开文件却打不开。用另一台电脑下载同样地址文件,发现文件大小不一样。怀疑是系统环境出了问题。 打开360卫士,找到【断网急救

关于VSCode中下载插件后还不能运行html文件到浏览器的问题

1月前

这段时间在学习html的过程中,想用VSCode运行html代码到浏览器,查阅资料后发现需要下载open in browser插件,但下载后右键点击仍然没有open in D

使用反汇编工具IDA查看动态库中的汇编代码上下文,结合安卓系统生成的Tombstone文件,排查安卓app程序底层C++库崩溃问题

1月前

目录 1、IDA工具介绍 2、产品及问题场景描述 3、查看Tombstone文件 4、使用IDA打开.so动态库文件,查看汇编代码的上下文,到C++源码中定位发生崩溃的那行代码 4.1、使用IDA打开.so动态库文件 4.2、切

完整指南:如何将文件从 iPhone 传输到 PC

1月前

如果您是 iPhone 用户,您可能会发现自己经常需要将照片、视频和音乐等文件从手机传输到计算机。这使您可以备份数据、节省存储空间或在更大的屏幕上欣赏内容。但是,您知道完成这项任务的最简单、最快的

Flutter桌面开发 — Windows App打包以及使用Inno Setup生成.exe文件安装包

1月前

文章目录 1 打包 Flutter Windows App1.1 开发环境准备1.2 支持Windows1.3 构建Windows App2 使用Inno Setup生成.exe文件安装包2.1 Inno Setup下载2.2 Inno S

Windows 系统 DLL 文件下载

1月前

Windows 系统 DLL 文件下载 【下载地址】Windows系统DLL文件下载 Windows 系统 DLL 文件下载 项目地址: https:gitcodeopen-source-toolkitf68ef 资源

c盘满了怎么清理垃圾而不误删文件?这个方法轻松解决C盘空间不足

1月前

c盘满了怎么清理垃圾而不误删文件?这个方法轻松解决C盘空间不足 亲爱的读者们,今天我们将分享一种高效且安全的方法来解决大家常遇到的C盘空间不足问题。当您的C盘存储空间告急时&#xff0c

windows服务器和本地windows共享文件(windows服务器下载文件)

1月前

1.按键windr  输入mstsc命令 2.输入远程服务器ip->点击显示选项 3.找到本地资源->点击详细信息 4.点开驱动器->找到分享的磁盘 5.然后从winds服务器复制代码到你的本地选中的磁盘 6.结束

实现windows和linux系统文件互传的最简便方法

1月前

这里介绍实现windows和linux系统文件互传的最简便方法,步骤如下: 1.下载winscp软件,地址:http:rj.baidusoft

download.js 实现txt,js文件等浏览器下载 而不是打开

29天前

现在本人正在做聊天系统,最近支持收发文件,那下载当然是不可避免的 1.第一步想的是open一个窗口下载文件但事实证明显然不合适,现在的浏览器都是会主动拦截弹窗 2.a通过

springmvc 上传下载文件问题(浏览器没有反应,下载文件无法打开)

29天前

1点击下载 浏览器没有反应 不进行下载: $("#download").bind(click, function() { 生成的文件名 var filename$("#file

一个切割PDF文件的简单的方法 -只需要chrome浏览器

29天前

只需要一个chrome浏览器。 使用chrome浏览器打开一个pdf,点击右上角的打印图标,如下图接着进入下图所示的页面,将Destination改为Save as P

删除文件显示正在使用无法删除该怎么办?

29天前

有时候当我们删除电脑程序或应用软件时,系统会提示我们文件正在使用无法删除,而我们明明是已经把这个文件关闭了的,碰到这种情况怎么办,小编以无法删除的MV

java文件不能运行_java文件不能运行怎么办?

29天前

java文件不能运行怎么办? java文件不能运行的解决办法: 1.安装好Java虚拟机后,打开桌面上“我的电脑”,点击菜单“工具”→“文件夹选项”;

一不小心给桌面粘贴了1280个文件怎么办?

29天前

搞了一下午很混乱,慌乱中不小心将一个文件夹里的1280个包粘贴在了桌面上, 完后都没有撤销粘贴这个鼠标右键功能,反而还可以再粘贴。 很懵逼,只能把桌面上

从Linux服务器下载文件到window本地电脑

28天前

1. 用sz命令 如果通过xshell连接到服务器&#xff0c;且为SSH方式&#xff0c;则可以用sz命令&#xff0c;直接在Linux的提示符下操作。 sz <文件路径……文件名> 此方法

vsCode 在windows环境编辑linux上的文件(SFTP)

28天前

目录 1、前言 2、SFTP原理 3、SFTP插件安装 4、SFTP插件配置 5、SFTP插件使用 ​ 1、前言 做linux开发的开发者经常面临着需要把windows上写好的程序上传到linux环境上,或者忍受

Windows系统缺少找不到libusb0.dll文件的解决办法

28天前

其实很多用户玩单机游戏或者安装软件的时候就出现过这种问题&#xff0c;如果是新手第一时间会认为是软件或游戏出错了&#xff0c;其实并不是这样&#xff0c;其主要原因就是你电脑系统的该dll文件丢失了或没有安装一

Windows XP系统中DLL文件缺失:当遇到DLL文件丢失时,如何确保系统的稳定运

27天前

在使用Windows XP操作系统时&#xff0c;偶尔会遇到与DLL文件相关的错误提示&#xff0c;如“找不到xxx.dll”或“xxx.dll已损坏”。这些问题可能导致某些应用程序无法正常启动或运行。本文将探讨DLL文

发表评论

全部评论 0
暂无评论