以前一直搞不明白为什么要用XML这个东西,总觉的没什么用,可是后来慢慢才知道如今的WEB应用已经无法离开XML了,尽管我此刻对XML的认识依然是一知半解,但总算是知道了一些最基本的操作,今天只是讲一下对XML的基本读写操作,相信对不了解XML的朋友还是会有一点点帮助的。
在讲代码之前还是先说一下概念上的东东吧,XML是干什么用的?这是很多不了解XML的朋友都会问的一句话,由于很多地方都拿XML和HTML做比较,所以我以前也一直认为XML可能就是一种新的HTML,其实虽然都是标记语言但XML和HTML在本质上是有很大区别的,想想看,HTML这个我们都熟悉的东西,他是做什么用的?他就是一个包含了文字图像影视等对象的文件,而且经过了格式美化用来给我们阅读欣赏,HTML最主要的功能就是让人“看”,而XML不同,虽然他也能让人“看”可他更为重要的功能是用来存储数据,他能够实现关系型数据库的基本功能,能够对数据对象进行常见的添加、编辑、删除、查询。而这些是HTML所不能够实现的,所以我觉的看XML和HTML区别首先要记住这一点,而对于经常提到的“XML可随意扩展HTML不好扩展”这样的话太抽像,会让入门的人听的云里雾里的。那XML的数据管理功能没有数据库强大为什么我们要用XML存取数据而不直接用数据库?主要原因大概有两个:1、对于小量的数据而言使用XML比使用数据库性能要好,也能大量减轻数据库的负担;2、XML的兼容性,开放性,使它在所有平台上都能使用,所有WEB开发语言都能对他进行操作。因为他的种种优点使XML应用的十分广泛,比如在ASP.NET中的DataSet就是使用XML来存放数据,配置文件Web.Config也是使用XML,以方便在程序中通过API进行灵活配置。当然,要想正常的“看”一XML文件有时还需要使用XSD(设计架构)和XSL(样式语言)对XML进行一下处理,否则直接显示XML文件可读性是很差的,对于XSD和XSL的使用还不是很熟练也就不说这个了。
好了言归正传,先从XML数据读取开始。先把练习用的XML贴出来




























在上面这个XML中NewDataSet是根节点 Table是一级节点 ShipperID,CompanyName,Phone是二级节点
1、最简单的XML数据读取方法




同样还可以使用通过DataSet的WriteXml方法把一个数据库里的表写成一个XML文件,很简单就不多说了。
2、添加一条记录
添加一条记录可以使用DataSet把XML读出来,之后在DataSet中进行NewRow的操作和对数据库操作一样,只是在添加完成后使用WriteXml方法把添加的数据保存一下就OK了,我今天要讲的是使用XmlDocument及相关类进行数据添加。




















3、编辑数据
同样可以使用DataSet进行编辑,我们还是讲使用XmlDocument来编辑,使用两个循环在XML文件中查找名为Phone且值为0991的节点,找到后进行修改



























4、删除数据
删除数据和编辑数据一样,只有一句代码不同



























5、使用Xpath进行查找
上面编辑和删除时,我们为了查找到我们要求的数据使用了两个循环,其实我们完全可以使用Xpath来进行查找我们想要的数据条件,Xpath很像SQL中的Select语句,他的功能也是比较复杂的,光函数就有一百多个,http://www.w3pop.com/tech/school/xpath/xpath_syntax.asp这个网站有对Xpath语法的详细列表。我在这里只举个简单的例子来说明一下它的用法。比如我们要查找电话为0991的公司名称:




首先我们要使用XmlDocument类里的SelectSingleNode方法进行查询:
"//Table[Phone='0991']/CompanyName"
上面这句引号里的内容就是Xpath查询语句,它的结构与DOS下的文件系统(例如:C:/winows/System/win.com)十分相似,在查询语句里可以使用通配符,运算符,函数等复杂的表达式,这不是一两句能说清楚的,在我上面提供的网站里有说明,大家好好看看吧。另外,我在上面使用的是SelectSingleNode方法,这个方法顾名思义只能返回一个查询结果,如果要返回多个查询结果比如把电话为0991的一行数据全部返回:







