知识大全 简析Delphi中的XML编程

Posted 学生

篇首语:你今天的日积月累,早晚会成为别人的望尘莫及。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 简析Delphi中的XML编程相关的知识,希望对你有一定的参考价值。

简析Delphi中的XML编程  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!

  XML(eXtensible Markup Language可扩展标志语言)在近几年的信息类杂志 网站上可谓是最抢眼的一词 大大小小的信息产品都争相和它搭上关系 唯恐赶不及这辆快车 有着良好口碑的宝蓝(Borland)系列开发平台也不例外 从 版开始就集成了XML组件包 因其使用MSXMLDom解析器 相比于此前广泛应用的XMLParser解析器 MSXMLDom更显规范 中文兼容性更好(元素名 属性名均支持中文) 很受开发者青睐 为帮助初学者快速掌握Delphi中的XML编程 笔者特写此文 以供交流

  笔者通过一个读写XML文件的实例来说明XML编程的各个步骤 只需读者有结点 元素 属性的基本概念就能容易的理解本文 笔者所要读入的XML文件结构如下所示 命名为Input xml

<学生花名册>

<学生 性别 = 男 >

<姓名>李华

<年龄>

<电话>

<学生 性别 = 男 >

<姓名>张三

<年龄>

<电话>

  Input xml文件的第一行是XML的版本说明 属性encoding宣告使用何种字符集建立 默认以Unicode 编码(UTF 或UTF ) 这里用中文GB 码 第二行 <学生花名册> 是根元素 下面定义了两个学生元素 学生下面嵌套了三个子元素 是对学生的进一步说明 与之相对应的 我们在Delphi中定义如下的学生数据结构 // 后面的文字是对变量或语句的说明 下同

TStudent = class 学生

sex : string; //学生性别

name : string; //学生姓名

age : integer; //学生年龄

phone: string; //电话号码

end;

  为了读写 我们需要放置两个TXMLDocument控件 在Delphi VCL面板的Internet标签页里那个标有XML字样的控件就是 当然此控件也可以动态创建 但需要包含必要的文件 这里为简单起见 我们直接放置在窗体上 分别命名为InXMLDoc和OutXMLDoc InXMLDoc用于调入Input xml文件 OutXMLDoc用于暂存输出到Output xml的文档

  在窗体上放个按钮 我们把测试代码直接放置在按钮的单击事件里 先定义几个变量 用来保存临时信息 如下所示

Root : IXMLNode; //指向XML根结点

Parent_Node: IXMLNode; //指向学生结点

Child_node : IXMLNode; //指向学生的子结点

Student : TStudent; //存单个学生信息

List : TList; //存学生列表

i : integer; //循环变量

  我们先来读入XML文件 代码如下

List := TList Create; //初始化列表

InXMLDoc LoadFromFile( Input xml ); //调入Input xml文件

Root := InXMLDoc DocumentElement; //取XML文件的根结点 即 <学生花名册>

Parent_Node := Root ChildNodes First; //使Parent_Node指向学生结点

while (Parent_Node <> nil) do //循环取多个学生 可再多加几个学生信息测试

begin

if (Parent_Node NodeName = 学生 ) then //判断是否为学生结点

begin

Student := TStudent Create; //新建一个学生的结构信息

Student sex := Parent_Node Attributes[ 性别 ]; //取学生的性别属性

Child_Node := Parent_Node ChildNodes First;

//使Child_Node指向该学生的第一个子结点信息

while (Child_Node <> nil) do //循环取学生的各个子各点

begin

if (Child_Node NodeName = 姓名 ) then //判断是否为姓名结点

Student name := Child_Node Text //取姓名结点的值 取于name字段中

else if (Child_Node NodeName = 年龄 ) then //此行起后四行与前两行类似

Student age := StrToInt(Child_Node Text)

else if (Child_Node NodeName = 电话 ) then

Student phone := Child_Node Text;

Child_Node := Child_Node NextSibling; //顺序取下一个学生的子结点信息

end;

List Add(Student); //把一个学生信息加入列表

end;

Parent_Node := Parent_Node NextSibling; //顺序取下一个学生信息

end;

  到这儿 所有的学生信息都已存到List列表里面了 读者可以跟踪代码测试

  下面我们把List里的临时学生信息存到Output xml文件里 代码如下

OutXMLDoc Active := true; //激活OutXMLDoc 自动初始化空的XML文档

OutXMLDoc Encoding := GB ; //设置字符集

Root := OutXMLDoc AddChild( 学生花名册 ); //建根结点

for i := to List Count do //循环取各个学生信息

begin

Student := List Items[i]; //顺序取一个学生信息

if (Student <> nil) then

begin

Parent_Node := Root AddChild( 学生 ); //根结点后添加一个学生结点

Parent_Node Attributes[ 性别 ] := Student sex; //给学生结点设置性别属性

Child_Node := Parent_Node AddChild( 姓名 ); //学生结点后添加一个姓名结点

Child_Node Text := Student name; //设置姓名的文本值

Child_Node := Parent_Node AddChild( 年龄 ); //此行起后四行与前两行类似

Child_Node Text := IntToStr(Student age);

Child_Node := Parent_Node AddChild( 电话 );

Child_Node Text := Student phone;

end;

end;

OutXMLDoc SaveToFile( Output xml ); //把组织好的XML文档存于Output xml文件中

OutXMLDoc Active := false; //钝化(关闭)OutXMLDoc

List Free; //最后释放保存临时学生信息的列表

cha138/Article/program/Delphi/201311/24984

相关参考

知识大全 Web XML编程之显示XML文件内容

WebXML编程之显示XML文件内容  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  XML技术越

知识大全 Delphi7对XML的支持分析

Delphi7对XML的支持分析  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! Delphi支持对

知识大全 实例演练ASP+XML编程

掌握XML:实例演练ASP+XML编程  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  此文是一篇

知识大全 用PHP与XML联手进行网站编程

用PHP与XML联手进行网站编程  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  一小序 

知识大全 用PHP与XML联手进行网站编程[1]

用PHP与XML联手进行网站编程[1]  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  一小序  

知识大全 解析.Net框架下的XML编程技术[3]

解析.Net框架下的XML编程技术[3]  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!usingS

知识大全 解析.Net框架下的XML编程技术[1]

解析.Net框架下的XML编程技术[1]  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 

知识大全 解析.Net框架下的XML编程技术[2]

解析.Net框架下的XML编程技术[2]  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!usingS

知识大全 用PHP与XML联手进行网站编程[2]

用PHP与XML联手进行网站编程[2]  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  五案例解析

知识大全 使用 XML Web services 进行 Web 编程

使用XMLWebservices进行Web编程  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  X