分享
 
 
 

C#中使用XML---基于DOM的案例分析

王朝c#·作者佚名  2008-05-19
窄屏简体版  字體: |||超大  

编写此案例的目的是为了描述在普通的应用程序中如何运用DOM技术以及对上一篇文章《C#中使用XML――实现DOM》中所讲述的DOM的相关知识回顾一下,本案例将分析一个联系人应用程序,在这里将XML文档充当数据库来使用, 所有的联系人信息存储在XML文档中,同时,在程序中使用DOM对联系人文档进行查询、编辑、更新等操作。具体来说本案例将实现以下功能:

1.

添加一个新的联系人

2.

修改现有联系人

3.

删除现有联系人

4.

按姓氏查询联系人

5.

按名字查询联系人

6.

将所有联系人导出到另一个XML文件

7.

将联系人从另一个XML文件导入

以下是程序运行效果图:

应用程序主窗体:

添加联系人窗体:

修改联系人窗体:

以下是用于测试程序的XML文件:

contact.xml 将该文件保存在项目目录下

<?xml version="1.0" encoding="gb2312"?

<ContactDetails

<Contact

<name

<firstSteven</first

<lastPerez</last

</name

<noteCEONTALI@yahoo.com.cn;system at http://www.details.net/token</note

</Contact

<Contact

<name

<firstBilloys</first

<lastPerez</last

</name

<noteBilloys@163.com.cn;system at http://www.Billoys.com/Billoys.htm</note

</Contact

<Contact

<name

<first刘</first

<last罗锅</last

</name

<note古代人</note

</Contact

</ContactDetails

contact2.xml 该文件用于实现导入联系人功能,将该文件随便保存在一个目录下然后将保存路径连同文件名拷贝到主窗体的“保存的路径”文本框中再单击“导入”按纽即可实现导入功能。

<?xml version="1.0" encoding="gb2312"?

<ContactDetails

<Contact

<name

<firstSteven</first

<lastPerez</last

</name

<noteCEONTALI@yahoo.com.cn;system at http://www.details.net/token</note

</Contact

<Contact

<name

<firstBilloys</first

<lastPerez</last

</name

<noteBilloys@163.com.cn;system at http://www.Billoys.com/Billoys.htm</note

</Contact

<Contact

<name

<first刘</first

<last德华</last

</name

<note香港著名艺人,工作勤恳同时不忘生活,出演电影100多部,演技已达登峰造极,刻画人物栩栩如生</note

</Contact

<Contact

<name

<first扬</first

<last震</last

</name

<note重案六组探员,为人胆大心细,沉着冷静,富有人情味,经历几次案件后更加成熟,在成长中不断磨练,是个真的汉子,正应验那句话:成就靠真本事</note

</Contact

<Contact

<name

<first季</first

<last洁</last

</name

<note重案六组探员,富有人情味,对扬震早已芳心默许,知道为什么吗?因为她天生就爱保护别人,当她看到扬震被别人用枪指着头吓的回不过神来时就对这个真实的男人产生了感觉,真可谓巾帼不让须眉</note

</Contact

</ContactDetails

导出联系人时在“保存的路径”文本框中输入一个文件路径,程序将在该路径下创建一个XML文件,如果该文件存在于该路径上,程序将对该XML文件进行重写。

为实现以上所述所有功能,我专门编写了一个类来封装实现代码,该类代码如下:

namespace ContactApplication

{

using System;

using System.Xml;

using System.Text;

using System.Data;

using System.Windows.Forms;

using System.ComponentModel;

using System.Collections;

/// <summary

/// Contact 联系人

/// </summary

public class Contact : IDisposable

{

private string xmlPath;

private XmlDocument xmlDoc;

private XmlNode selectNode;

private string firstName;

private string lastName;

private string note;

#region Contact 构造器

/// <summary

/// 默认构造器

/// </summary

public Contact()

{

this.xmlPath = "../../Contact.xml";

this.selectNode = null;

this.xmlDoc = new XmlDocument();

this.xmlDoc.Load(this.xmlPath);

this.firstName = string.Empty;

this.lastName = string.Empty;

this.note = string.Empty;

}

/// <summary

/// 使用姓氏,名字,个人信息构造一个联系人对象

/// </summary

/// <param name="firstName"姓氏</param

/// <param name="lastName"名字</param

/// <param name="note"个人信息</param

public Contact(string firstName, string lastName, string note)

{

this.xmlPath = "../../Contact.xml";

this.selectNode = null;

this.xmlDoc = new XmlDocument();

this.xmlDoc.Load(this.xmlPath);

this.firstName = firstName;

this.lastName = lastName;

this.note = note;

}

#endregion

#region Contact 资源释放方法

/// <summary

/// 清理该对象所有正在使用的资源

/// </summary

public void Dispose()

{

this.Dispose(true);

GC.SuppressFinalize(this);

}

/// <summary

/// 释放该对象的实例变量

/// </summary

/// <param name="disposing"</param

protected virtual void Dispose(bool disposing)

{

if (!disposing)

return;

if (this.xmlPath != null)

this.xmlPath = null;

if (this.xmlDoc != null)

this.xmlDoc = null;

if (this.selectNode != null)

this.selectNode = null;

if (this.firstName != null)

this.firstName = null;

if (this.lastName != null)

this.lastName = null;

if (this.note != null)

this.note = null;

}

#endregion

#region Contact 属性

/// <summary

/// 姓氏

/// </summary

public string FirstName

{

get

{

return this.firstName;

}

set

{

this.firstName = value;

}

}

/// <summary

/// 名字

/// </summary

public string LastName

{

get

{

return this.lastName;

}

set

{

this.lastName = value;

}

}

/// <summary

/// 个人信息

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有