知识大全 简析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相关参考
WebXML编程之显示XML文件内容 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! XML技术越
Delphi7对XML的支持分析 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! Delphi支持对
掌握XML:实例演练ASP+XML编程 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 此文是一篇
用PHP与XML联手进行网站编程 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 一小序 
用PHP与XML联手进行网站编程[1] 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 一小序
解析.Net框架下的XML编程技术[3] 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!usingS
解析.Net框架下的XML编程技术[1] 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!
解析.Net框架下的XML编程技术[2] 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!usingS
用PHP与XML联手进行网站编程[2] 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 五案例解析
知识大全 使用 XML Web services 进行 Web 编程
使用XMLWebservices进行Web编程 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! X