论文部分内容阅读
摘要:XML能够使用得Internet上的数据交换变得更方便,XML与数据库一样,都能够作为信息存储的途径。当数据量不大的时候,比如完成一个在线备忘录,XML作为数据存储具有关系数据库所无法比拟的优势。在asp.net中能够利用.net类库提供的类及方法轻松地构建一个基于XML的在线备忘录。
关键词:XML;数据库;数据存储;asp.net;在线备忘录
中图分类号:TP311文献标识码:A文章编号:1009-3044(2008)21-30403-02
Making an Online Memoire Based on XML
LIN Li-xing
(Computer department,Minxi Vocational and Technical College,Longyan 364021,China)
Abstract: Using XML can make the data switching in internet more easy.XML can be the avenue to story information as the database. when the data size is not too much for example to make an online memoire ,XML is much better than the relation database as the datastorage. With the classes and the methods provided in asp.netit can make an online memoire based on XML easily.
Key words:XML;database;data storage;asp.net;online memoire
1 引言
随着网络技术的发展,人们通过网络传输各种信息,信息交换变得越来越频繁,对数据传输的要求也越来越高,如何不断提高数据传输的效率与质量已经成为网络技术发展关注的一大问题。在实际过程中,由于这些数据信息交换时会发生数据格式不同的问题,从而给信息交换带来困扰,提供一个便捷有效的数据格式以应用于网络传输成为解决这一问题的重要途径。XML提供的初衷就是为了解决这一问题。XML的全称是:Extensible Markup Language,意思是可扩展的标记语言,是W3C定义的一种可扩展标记语言,它的出现使得在Internet上进行数据交换变得更加方便。对一个文档进行标注,使得文档的内容变成一种结构化数据,结构化是XML的最大特点,同时也能够实现对不同数据源的数据的无缝集成,提供对同一数据的多种处理方法。XML的使用正越来越普及,越来越多的领域和环境下都采用XML来实现需要的功能。
XML具有许多的优点:第一,XML是自描述的,它不仅允许定义自己的一套标记,也可以根据其他各种规则来制定标记;第二,XML允许对文档内容进行检验,例如文档类型定义,XML模式等都是应用于对文档进行验证;第三,可以使用XML开发各种行业的专有标记语言;第四,XML通用性,使它成为不同应用之间交换数据的统一格式;第五,XML是开放的,它是W3C定制的开放标准,可以广泛地适用于不同的应用环境;第六,XML规定了文档的结构,使用对文档的搜索方式和方法得到发展,提高了文档检索的效率。
在实际应用中,XML发挥着巨大的的作用,在很多领域和环境下都采用XML来实现需要的功能,应用主要体现在四个方面:不同的应用平台上的数据交换、数据表达的多样性、作为编制新语言的工具、在C—S模式下,作为客户端存储数据的容器,在客户端上可以根据具体需求对数据进行处理,减少重复通信量,服务器只需传递相应的XML文件到客户端上即可。
2 XML与数据库的比较
XML和数据库有很多相似之处,它们都是结构化的存储信息的途径。数据库用记录和字段组成的表格存储信息,这样就允许方便地访问和搜索。XML文件也可以按照类似的结构化方式来存储信息。而XML作为一个统一的标准,不会像数据库系统那样因为数据库的不同而造成数据传递的困难。XML可以从一种数据库中取出数据,并将数据上传到完全不同的数据库中
两者相比,Xml充当“数据库”做的备忘录与其他数据库系统相比有以下的好处:
1)速度上:XML是基于文件的,比ADO.net的存取数据库速度更快。
2)资源占用:无论数据总和多少,基本是处理分布式的小型文件(通常在1-100K内),所以不管是在内存或CPU的占用上都比数据库系统更节省空间。以XML构建的备忘录为例,数据存储的时候,若以XML为数据存储,所占用的字节最多不过以K为单位,一般不会超过100K。因为备忘录所需的数据量并不大,以100条记录为例,以XML形式存储,所需的存储空间不过20K左右,以access为数据存储,所需存储空间200K左右,而以SQL server为数据存储,需2M左右的存储空间。
3)移植性和通用性:因为XML本身是一种通用数据描述语言,无论是在不同操作系统或程序语言上均能顺利移植和应用。
但XML充当数据库也存在着以下的缺陷:修改、查找、维护、批量处理时如果数据量大,则必须借助程序系统操作,直接在文件夹管理文件非常麻烦,这方面逊于数据库系统的界面和易用性。但也有解决方法,可建立自己的XML数据处理软件或WEB系统来弥补这方面的不足。 安全性:XML以文件形式存放,充当数据库时的安全性相较于数据库系统而言较弱但在写程序时可以考虑用加密方法来实现。只是基于XML文件构建的数据库结构比较散乱,不如数据表封装的简单。
在XML中,每个文档都可以被看成由若干个组件构成,若将一个XML文档看成是一个逻辑整体,一个XML文档是由若干个元素组成,每个元素都是一个文档逻辑组件,一个元素可以包含若干个子元素。在这种树结构的层次结构中,每个结点都是一个元素,其中包含根元素,根元素是唯一的,是XML文档的入口,根元素可包含其子元素,其子元素又可以包含自己的子元素。每个元素都有自己的属性。如果从文档的物理结构看,一篇XML文档可以看成是由一个或多个存储单元(即实体)组成。
3 Asp.net中对XML的操作
Asp.net是微软公司推出的一种Internet编程技术,它采用效率较高的,面向对象的方法来创建动态Web应用程序。Asp.net是一个统一的Web开发平台,提供了开发Web网站所必需的服务。Asp.net是一个基于.net的编译化开发环境,也是.net Framework的一部分,因此可以使用.net framework 中的所有类型与服务。
.net framework中提供了一个XmlDocument类,用来表示XML文档,作用是解析xml文档,将其转换为对象,便于在程序中对XML文档操作。而XmlDataDocument 类对 XmlDocument 进行扩展,允许通过关系 DataSet 存储、检索和操作结构化数据。XMLDataDocument可以用来加载关系数据或 XML 数据,并使用 W3C 文档对象模型 (DOM) 操作这些数据。
XmlDocument有两种加载Xml文档的方法,Load()方法加载指定的 XML 数据,LoadXml()方法从指定的字符串加载 XML 文档。
XMLDataDocument类提供了一些对XML文件操作常见的方法。如下所示:
SelectNodes:选择匹配 XPath 表达式的节点列表。
RemoveChild :移除指定的子节点。
SelectSingleNode: 选择匹配 XPath 表达式的第一个 XmlNode
ReplaceChild:用 newChild 节点替换子节点 oldChild。
Save:将 XML 文档保存到指定的位置。
CreateAttribute: 创建具有指定名称的 XmlAttribute。
AppendChild:将指定的节点添加到该节点的子节点列表的末尾
4 创建在线备忘录
在线备忘录,数据内容包括:备忘录的标题,备忘录的时间,备忘录的内容以及内容的紧急性。因为备忘录的数据量及数据内容相对简单,如果使用关系数据库来记录,在速度及资源占用上均不占优势,所以使用XML文件作为备忘录的数据存储。
XML文件结构如下所示:
<memoes>
<memo id="1">
<title>dfh</title>
<date>2007-11-8</date>
<engy>一般</engy>
<content>今天要去开会</content>
</memo>
<memo id="2">
<title>fdgdf</title>
<date>2007-11-10</date>
<engy>重要</engy>
<content>今天是老爸的生日!</content>
</memo>
</memoes>
4.1 添加备忘录的内容及修改,然后保存
XmlDataDocument memoXmlDoc;
//载入XML文档
memoXmlDoc=new XmlDataDocument();
memoXmlDoc.Load(Server.MapPath("memoes.xml"));
//根结点 XmlNode root=memoXmlDoc.DocumentElement ;
//定义一个新结点 XmlNode newmemo=memoXmlDoc.CreateElement("memo");
//指明新结点的内容 newmemo.InnerXml="<title>" texttitle.Text "</title>" "<date>" labeldate.Text "</date>" "<engy>" listweather.SelectedItem.Text "</engy>" "<content>" textcontext.Text "</content>";
if(Request.QueryString["id"]=="-1") //保存新备忘录
{
string memoID;
int id;
try
{
id= int.Parse(root.ChildNodes[root.ChildNodes.Count - 1].Attributes["id"].Value);
}
catch (Exception ex)
{ id = 0; }
memoID=(id 1).ToString();
XmlAttribute attrID=memoXmlDoc.CreateAttribute("id");
attrID.Value=memoID;
newmemo.Attributes.Append(attrID);
root.AppendChild(newmemo);(下转第407页)
(上接第404页)
}
Else/*修改备忘录的内容*/
{
XmlAttribute attrID=memoXmlDoc.CreateAttribute("id");
attrID.Value =Request.QueryString["id"];
newdiary.Attributes.Append(attrID);
XmlNode oldmemo=memoXmlDoc.SelectSingleNode ("descendant::memo[@id=’" Request.QueryString["id"] "’]");
root.ReplaceChild(newmemo,oldmemo);
}
memoXmlDoc.Save(Server.MapPath("memo.xml"));
4.2 查询以前的备忘录
//使用selectnodes获取特定月份的日记
memoes=memoXmlDoc.DocumentElement.SelectNodes ("descendant::memo[contains(date,’" yearMonth "’)]");
4.3 删除备忘录
XmlNode root=memoxmldoc.DocumentElement ;//获取根结点
XmlNode d=memoxmldoc.DocumentElement.SelectSingleNode ("descendant::memo[@id=’" chk.ID.Substring(6) "’]");
root.RemoveChild(d);
5 总结
系统在组织数据时希望数据能够达到以下目标:数据对计算机及用户都是易读的,对于数据的内容与结构能定义,而数据的结构与数据的表示能分离,同时这些结构必须是开放的和可扩展的,而XML能够满足所有的要求。XML数据被存为一种简单、开放的格式,它很容易被应用程序解析。XML文档包含的是文本而不是二进制数据,应用程序可以解析XML文档,只查找感兴趣的特定标记,而未知标记及其相关数据可以被忽略。XML在作为数据存储,当数据量不大的时候,具有比关系数据库更大的优势!
参考文献:
[1] Chuck White.XML从入门到精通[M].北京:电子工业出版社,2002.
[2] 劳伦特.XML基础与应用[M].3版.云舟工作室,译.北京:中国水利水电出版社,2002.
[3] 东方人华.Visual C#.net web应用程序设计[M].北京:清华大学出版社,2005.
[4] Jesse liberty,dan hurwitz.Programming asp.net中文版[M].瞿杰,等,译.北京:电子工业出版社,2007.
关键词:XML;数据库;数据存储;asp.net;在线备忘录
中图分类号:TP311文献标识码:A文章编号:1009-3044(2008)21-30403-02
Making an Online Memoire Based on XML
LIN Li-xing
(Computer department,Minxi Vocational and Technical College,Longyan 364021,China)
Abstract: Using XML can make the data switching in internet more easy.XML can be the avenue to story information as the database. when the data size is not too much for example to make an online memoire ,XML is much better than the relation database as the datastorage. With the classes and the methods provided in asp.netit can make an online memoire based on XML easily.
Key words:XML;database;data storage;asp.net;online memoire
1 引言
随着网络技术的发展,人们通过网络传输各种信息,信息交换变得越来越频繁,对数据传输的要求也越来越高,如何不断提高数据传输的效率与质量已经成为网络技术发展关注的一大问题。在实际过程中,由于这些数据信息交换时会发生数据格式不同的问题,从而给信息交换带来困扰,提供一个便捷有效的数据格式以应用于网络传输成为解决这一问题的重要途径。XML提供的初衷就是为了解决这一问题。XML的全称是:Extensible Markup Language,意思是可扩展的标记语言,是W3C定义的一种可扩展标记语言,它的出现使得在Internet上进行数据交换变得更加方便。对一个文档进行标注,使得文档的内容变成一种结构化数据,结构化是XML的最大特点,同时也能够实现对不同数据源的数据的无缝集成,提供对同一数据的多种处理方法。XML的使用正越来越普及,越来越多的领域和环境下都采用XML来实现需要的功能。
XML具有许多的优点:第一,XML是自描述的,它不仅允许定义自己的一套标记,也可以根据其他各种规则来制定标记;第二,XML允许对文档内容进行检验,例如文档类型定义,XML模式等都是应用于对文档进行验证;第三,可以使用XML开发各种行业的专有标记语言;第四,XML通用性,使它成为不同应用之间交换数据的统一格式;第五,XML是开放的,它是W3C定制的开放标准,可以广泛地适用于不同的应用环境;第六,XML规定了文档的结构,使用对文档的搜索方式和方法得到发展,提高了文档检索的效率。
在实际应用中,XML发挥着巨大的的作用,在很多领域和环境下都采用XML来实现需要的功能,应用主要体现在四个方面:不同的应用平台上的数据交换、数据表达的多样性、作为编制新语言的工具、在C—S模式下,作为客户端存储数据的容器,在客户端上可以根据具体需求对数据进行处理,减少重复通信量,服务器只需传递相应的XML文件到客户端上即可。
2 XML与数据库的比较
XML和数据库有很多相似之处,它们都是结构化的存储信息的途径。数据库用记录和字段组成的表格存储信息,这样就允许方便地访问和搜索。XML文件也可以按照类似的结构化方式来存储信息。而XML作为一个统一的标准,不会像数据库系统那样因为数据库的不同而造成数据传递的困难。XML可以从一种数据库中取出数据,并将数据上传到完全不同的数据库中
两者相比,Xml充当“数据库”做的备忘录与其他数据库系统相比有以下的好处:
1)速度上:XML是基于文件的,比ADO.net的存取数据库速度更快。
2)资源占用:无论数据总和多少,基本是处理分布式的小型文件(通常在1-100K内),所以不管是在内存或CPU的占用上都比数据库系统更节省空间。以XML构建的备忘录为例,数据存储的时候,若以XML为数据存储,所占用的字节最多不过以K为单位,一般不会超过100K。因为备忘录所需的数据量并不大,以100条记录为例,以XML形式存储,所需的存储空间不过20K左右,以access为数据存储,所需存储空间200K左右,而以SQL server为数据存储,需2M左右的存储空间。
3)移植性和通用性:因为XML本身是一种通用数据描述语言,无论是在不同操作系统或程序语言上均能顺利移植和应用。
但XML充当数据库也存在着以下的缺陷:修改、查找、维护、批量处理时如果数据量大,则必须借助程序系统操作,直接在文件夹管理文件非常麻烦,这方面逊于数据库系统的界面和易用性。但也有解决方法,可建立自己的XML数据处理软件或WEB系统来弥补这方面的不足。 安全性:XML以文件形式存放,充当数据库时的安全性相较于数据库系统而言较弱但在写程序时可以考虑用加密方法来实现。只是基于XML文件构建的数据库结构比较散乱,不如数据表封装的简单。
在XML中,每个文档都可以被看成由若干个组件构成,若将一个XML文档看成是一个逻辑整体,一个XML文档是由若干个元素组成,每个元素都是一个文档逻辑组件,一个元素可以包含若干个子元素。在这种树结构的层次结构中,每个结点都是一个元素,其中包含根元素,根元素是唯一的,是XML文档的入口,根元素可包含其子元素,其子元素又可以包含自己的子元素。每个元素都有自己的属性。如果从文档的物理结构看,一篇XML文档可以看成是由一个或多个存储单元(即实体)组成。
3 Asp.net中对XML的操作
Asp.net是微软公司推出的一种Internet编程技术,它采用效率较高的,面向对象的方法来创建动态Web应用程序。Asp.net是一个统一的Web开发平台,提供了开发Web网站所必需的服务。Asp.net是一个基于.net的编译化开发环境,也是.net Framework的一部分,因此可以使用.net framework 中的所有类型与服务。
.net framework中提供了一个XmlDocument类,用来表示XML文档,作用是解析xml文档,将其转换为对象,便于在程序中对XML文档操作。而XmlDataDocument 类对 XmlDocument 进行扩展,允许通过关系 DataSet 存储、检索和操作结构化数据。XMLDataDocument可以用来加载关系数据或 XML 数据,并使用 W3C 文档对象模型 (DOM) 操作这些数据。
XmlDocument有两种加载Xml文档的方法,Load()方法加载指定的 XML 数据,LoadXml()方法从指定的字符串加载 XML 文档。
XMLDataDocument类提供了一些对XML文件操作常见的方法。如下所示:
SelectNodes:选择匹配 XPath 表达式的节点列表。
RemoveChild :移除指定的子节点。
SelectSingleNode: 选择匹配 XPath 表达式的第一个 XmlNode
ReplaceChild:用 newChild 节点替换子节点 oldChild。
Save:将 XML 文档保存到指定的位置。
CreateAttribute: 创建具有指定名称的 XmlAttribute。
AppendChild:将指定的节点添加到该节点的子节点列表的末尾
4 创建在线备忘录
在线备忘录,数据内容包括:备忘录的标题,备忘录的时间,备忘录的内容以及内容的紧急性。因为备忘录的数据量及数据内容相对简单,如果使用关系数据库来记录,在速度及资源占用上均不占优势,所以使用XML文件作为备忘录的数据存储。
XML文件结构如下所示:
<memoes>
<memo id="1">
<title>dfh</title>
<date>2007-11-8</date>
<engy>一般</engy>
<content>今天要去开会</content>
</memo>
<memo id="2">
<title>fdgdf</title>
<date>2007-11-10</date>
<engy>重要</engy>
<content>今天是老爸的生日!</content>
</memo>
</memoes>
4.1 添加备忘录的内容及修改,然后保存
XmlDataDocument memoXmlDoc;
//载入XML文档
memoXmlDoc=new XmlDataDocument();
memoXmlDoc.Load(Server.MapPath("memoes.xml"));
//根结点 XmlNode root=memoXmlDoc.DocumentElement ;
//定义一个新结点 XmlNode newmemo=memoXmlDoc.CreateElement("memo");
//指明新结点的内容 newmemo.InnerXml="<title>" texttitle.Text "</title>" "<date>" labeldate.Text "</date>" "<engy>" listweather.SelectedItem.Text "</engy>" "<content>" textcontext.Text "</content>";
if(Request.QueryString["id"]=="-1") //保存新备忘录
{
string memoID;
int id;
try
{
id= int.Parse(root.ChildNodes[root.ChildNodes.Count - 1].Attributes["id"].Value);
}
catch (Exception ex)
{ id = 0; }
memoID=(id 1).ToString();
XmlAttribute attrID=memoXmlDoc.CreateAttribute("id");
attrID.Value=memoID;
newmemo.Attributes.Append(attrID);
root.AppendChild(newmemo);(下转第407页)
(上接第404页)
}
Else/*修改备忘录的内容*/
{
XmlAttribute attrID=memoXmlDoc.CreateAttribute("id");
attrID.Value =Request.QueryString["id"];
newdiary.Attributes.Append(attrID);
XmlNode oldmemo=memoXmlDoc.SelectSingleNode ("descendant::memo[@id=’" Request.QueryString["id"] "’]");
root.ReplaceChild(newmemo,oldmemo);
}
memoXmlDoc.Save(Server.MapPath("memo.xml"));
4.2 查询以前的备忘录
//使用selectnodes获取特定月份的日记
memoes=memoXmlDoc.DocumentElement.SelectNodes ("descendant::memo[contains(date,’" yearMonth "’)]");
4.3 删除备忘录
XmlNode root=memoxmldoc.DocumentElement ;//获取根结点
XmlNode d=memoxmldoc.DocumentElement.SelectSingleNode ("descendant::memo[@id=’" chk.ID.Substring(6) "’]");
root.RemoveChild(d);
5 总结
系统在组织数据时希望数据能够达到以下目标:数据对计算机及用户都是易读的,对于数据的内容与结构能定义,而数据的结构与数据的表示能分离,同时这些结构必须是开放的和可扩展的,而XML能够满足所有的要求。XML数据被存为一种简单、开放的格式,它很容易被应用程序解析。XML文档包含的是文本而不是二进制数据,应用程序可以解析XML文档,只查找感兴趣的特定标记,而未知标记及其相关数据可以被忽略。XML在作为数据存储,当数据量不大的时候,具有比关系数据库更大的优势!
参考文献:
[1] Chuck White.XML从入门到精通[M].北京:电子工业出版社,2002.
[2] 劳伦特.XML基础与应用[M].3版.云舟工作室,译.北京:中国水利水电出版社,2002.
[3] 东方人华.Visual C#.net web应用程序设计[M].北京:清华大学出版社,2005.
[4] Jesse liberty,dan hurwitz.Programming asp.net中文版[M].瞿杰,等,译.北京:电子工业出版社,2007.