您好,欢迎访问三七文档
当前位置:首页 > 建筑/环境 > 电气安装工程 > C技术C中使用XML基于DOM的案例分析
C#技术:C#中使用XML——基于DOM的案例分析编写此案例的目的是为了描述在普通的应用程序中如何运用DOM技术以及对上一篇文章《C#中使用XML——实现DOM》中所讲述的DOM的相关知识回顾一下,本案例将分析一个联系人应用程序,在这里将XML文档充当数据库来使用,所有的联系人信息存储在XML文档中,同时,在程序中使用DOM对联系人文档进行查询、编辑、更新等操作。具体来说本案例将实现以下功能:1.添加一个新的联系人2.修改现有联系人3.删除现有联系人4.按姓氏查询联系人5.按名字查询联系人6.将所有联系人导出到另一个XML文件7.将联系人从另一个XML文件导入以下是程序运行效果图:应用程序主窗体:添加联系人窗体:修改联系人窗体:以下是用于测试程序的XML文件:contact.xml将该文件保存在项目目录下?xmlversion=1.0encoding=gb2312?ContactDetailsContactnamefirstSteven/firstlastPerez/last/namenoteCEONTALI@yahoo.com.cn;systemat@163.com.cn;systemat刘/firstlast罗锅/last/namenote古代人/note/Contact/ContactDetailscontact2.xml该文件用于实现导入联系人功能,将该文件随便保存在一个目录下然后将保存路径连同文件名拷贝到主窗体的“保存的路径”文本框中再单击“导入”按纽即可实现导入功能。?xmlversion=1.0encoding=gb2312?ContactDetailsContactnamefirstSteven/firstlastPerez/last/namenoteCEONTALI@yahoo.com.cn;systemat@163.com.cn;systemat刘/firstlast德华/last/namenote香港著名艺人,工作勤恳同时不忘生活,出演电影100多部,演技已达登峰造极,刻画人物栩栩如生/note/ContactContactnamefirst扬/firstlast震/last/namenote重案六组探员,为人胆大心细,沉着冷静,富有人情味,经历几次案件后更加成熟,在成长中不断磨练,是个真的汉子,正应验那句话:成就靠真本事/note/ContactContactnamefirst季/firstlast洁/last/namenote重案六组探员,富有人情味,对扬震早已芳心默许,知道为什么吗?因为她天生就爱保护别人,当她看到扬震被别人用枪指着头吓的回不过神来时就对这个真实的男人产生了感觉,真可谓巾帼不让须眉/note/Contact/ContactDetails导出联系人时在“保存的路径”文本框中输入一个文件路径,程序将在该路径下创建一个XML文件,如果该文件存在于该路径上,程序将对该XML文件进行重写。为实现以上所述所有功能,我专门编写了一个类来封装实现代码,该类代码如下:namespaceContactApplication{usingSystem;usingSystem.Xml;usingSystem.Text;usingSystem.Data;usingSystem.Windows.Forms;usingSystem.ComponentModel;usingSystem.Collections;///summary///Contact联系人////summarypublicclassContact:IDisposable{privatestringxmlPath;privateXmlDocumentxmlDoc;privateXmlNodeselectNode;privatestringfirstName;privatestringlastName;privatestringnote;#regionContact构造器///summary///默认构造器////summarypublicContact(){this.xmlPath=../../Contact.xml;this.selectNode=null;this.xmlDoc=newXmlDocument();this.xmlDoc.Load(this.xmlPath);this.firstName=string.Empty;this.lastName=string.Empty;this.note=string.Empty;}///summary///使用姓氏,名字,个人信息构造一个联系人对象////summary///paramname=firstName姓氏/param///paramname=lastName名字/param///paramname=note个人信息/parampublicContact(stringfirstName,stringlastName,stringnote){this.xmlPath=../../Contact.xml;this.selectNode=null;this.xmlDoc=newXmlDocument();this.xmlDoc.Load(this.xmlPath);this.firstName=firstName;this.lastName=lastName;this.note=note;}#endregion#regionContact资源释放方法///summary///清理该对象所有正在使用的资源////summarypublicvoidDispose(){this.Dispose(true);GC.SuppressFinalize(this);}///summary///释放该对象的实例变量////summary///paramname=disposing/paramprotectedvirtualvoidDispose(booldisposing){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#regionContact属性///summary///姓氏////summarypublicstringFirstName{get{returnthis.firstName;}set{this.firstName=value;}}///summary///名字////summarypublicstringLastName{get{returnthis.lastName;}set{this.lastName=value;}}///summary///个人信息////summarypublicstringNote{get{returnthis.note;}set{this.note=value;}}#endregion#regionContact功能函数///summary///加载所有的联系人姓名////summary///returns联系人姓名列表/returnspublicArrayListLoadContactName(){ArrayListnameList=newArrayList();XmlNodeListnameNodeList=xmlDoc.SelectNodes(//name);foreach(XmlNodenameNodeinnameNodeList){XmlElementfirstNameNode=(XmlElement)nameNode.FirstChild;XmlTextfirstNameText=(XmlText)firstNameNode.FirstChild;XmlElementlastNameNode=(XmlElement)nameNode.LastChild;XmlTextlastNameText=(XmlText)lastNameNode.FirstChild;nameList.Add(lastNameText.Value++firstNameText.Value);}returnnameList;}///summary///获取note节点的文本值////summary///returnsnote节点的文本值/returnspublicstringDisplayNote(){stringnote=string.Empty;XmlElementselectName=(XmlElement)xmlDoc.SelectSingleNode(string.Format(//name[first='{0}'andlast='{1}'],this.firstName,this.lastName));note=selectName.NextSibling.InnerText;returnnote;}///summary///搜索联系人////summary///remarks///根据传入的搜索类型(按姓或名)以及搜索值查询符合条件的联系人信息,并以对话框形式显示////remarks///paramname=searchType搜索类型(first或last)/param///paramname=searchValue搜索值/parampublicvoidSearchContact(stringsearchType,stringsearchValue){stringcontactInfo=string.Empty;inti=0;XmlNodeListnameNodeList=xmlDoc.SelectNodes(string.Format(//name[{0}='{1}'],searchType,searchValue));if(searchType==first){MessageBox.Show(string.Format(符合{0}姓氏的联系人有{1}个,searchValue,nameNodeList.Count),搜索联系人,MessageBoxButtons.OK,MessageBoxIcon.Informa
本文标题:C技术C中使用XML基于DOM的案例分析
链接地址:https://www.777doc.com/doc-2907476 .html