`
blueyanghualong
  • 浏览: 225251 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

xml应用于存储的讨论【转】

 
阅读更多

 

 写道
XML简介
谈到XML就不能不提HTML,HTML语言的出现推动了互联网的普及.在XML诞生之初甚至现在,也有好多人有这样一种误解XML将完全取代HTML,其实,完全不是这样的。 同HTML一样, XML 是SGML (Standard Generalized Markup Language, 通用标识语言标准)的一个子集,它是描述网络上的数据内容和结构的标准。尽管如此,两这之间还是有很大的差别的。
XML不象HTML,HTML仅仅提供了在页面上显示信息的通用方法(没有上下文相关和动态功能) ,XML则对数据赋予上下文相关功能,它继承了SGML的大部分功能,却使用了不太复杂的技术。因此我们要明白XML不是HTML的一种替代品.在将来最可能的是网站开发者使用XML来描述网站所需数据和网站的结构,而HTML将用来格式化和显示这些数据.
XML不是HTML的替代品,两者的用途是不同的,XML是被设计用来描述数据和定焦与数据是什么,而HTML是被设计用来显示数据和定焦与数据是什么样子的。XML是基于数据的语言,是关于如何描述信息的,它只关注与内容,而HTML是关于如何显示信息的, 它更关注于样式.,传统的HTML对内容的支持非常简单,这就是设计大型WEB网站的时候,一定要使用数据库,因为HTML无法提供对大量内容的支持。
另外,也是非常重要的是XML是可扩展的,在HTML中所有的标志(tags)和文档结构都是预先定义好了的,我们必须使用那些标准的HTML标志,XML允许我们自定义自己的标志和自己的文档结构.
回页首
怎样用XML存储和备份数据
其实,通过前面的介绍,相信大家应该明白了为什么要使用XML来进行数据存储和备份了。
传统的数据库存储大都是通过数据库来实现的,数据库的出现给我们带来了很大的便利,提供的快速的信息搜索查询方式,但是数据库也给我们带来了一些不便,现在数据库系统特别的多,像Oracle,Sql Server,Linux下的自由软件MYsql等,他们各自有不同的标准,并且存在于不同的操作系统,以往要在他们之间交换数据尽管可行,但是非常困难,其实通过XML可以很轻松的实现。
XML在数据库应用方面可以有以下用途:
1、 备份数据库
使用XML来备份数据库可以灵活的将数据库中的信息转移到其他的平台和数据库系统中,而且备份数据库占用的空间也非常小,在MicroSoft的Sql Server2000中已经提供了对XML强大的支持,它通过For XML来将数据库中的记录导出为XML格式,可以通过Open Xml将数据从XML中导入到数据库中。这里就不介绍了,下面介绍这样通过WEB方式将Access数据备份到XML文件中,本文使用的数据库是E-home中厨房系统中的菜谱数据库,数据库主要有一个表FOOD,包含id,name,info,type,number,time字段,以下是在Win2000环境下备份ACCESS数据库的代码:(环境Win2000+IIS)
文件名:FoodBackup.asp
<html>
<head>
<title>使用XML备份Access数据库</title>
</head>
<body>
<%
dim objconn
dim objrs
dim objfs
dim xmlfile
set objconn=server.createobject("adodb.connection")
//objconn.open "dsn=food;database=home;uid=;pwd=;"
objconn.open "driver={Microsoft Access Driver (*.mdb)};dbq="+SERVER.MapPath("home.mdb")
//连接数据库,指定数据库文件的路径
//如果是MS Sql Server 则为:
//objconn.open "driver={SQL Server};Database=Dbname;Server=ServerName;
UID=Username;PWD=Password"
set objrs=server.CreateObject("Adodb.RecordSet")
objrs.Open "food",objconn
set objfs=server.CreateObject("Scripting.FileSystemObject")
set xmlfile=objfs.CreateTextFile("d:\food.xml")
xmlfile.writeline "<foodlist>"
while not objrs.EOF
xmlfile.writeline "<food><id>"&objrs("ID")&"</id><name>"
xmlfile.writeline objrs("name")&"</name><info>"&objrs("info")&"
</info><type>"&objrs("type")

xmlfile.writeline "</type><number>"&objrs("number")&"
</number><time>"&objrs("time")&"</time></food>"
objrs.MoveNext
wend
xmlfile.writeline "</foodlist>"
objrs.Close
set objrs=nothing
xmlfile.close
set xmlfile=nothing
%>
</body>
</html>

通过以上代码就可以实现对ACCESS数据库FOOD中表food的备份,只需要在本文件的基础上进行改动,就可以实现自由选择数据库中的表进行备份了。备份前文件的大小是3.65M,备份后经过Winzip压缩后的大小只有225KB,只需要通过对以上文件进行改动,也可以实现对Oracle,Excell.Access,Visual Foxpro等数据库信息的备份。
我们还可以通过PHP操作来对其他数据库进行备份,以下是在Linux下通过Apache+PHP对Mysql数据库的备份的文件代码:
文件一、Listtable.php (文件列出数据库中的所有表格,供选择备份)
<html>
<head>
<title>使用XML备份Mysql数据库</title>
<meta http-equiv="Content-Type" content="text/html; charset=GB2312">
</head>
<body bgcolor="#FFFFFF" text="#000000">
请选择要备份的表格:
<?
$con=mysql_connect('localhost','root','xswlily');
$lists=mysql_list_tables("embed",$con);
//数据库连接代码
$i=0;
while($i<mysql_num_rows($lists)){
$tb_name=mysql_tablename($lists,$i);
echo "<a href=backup.php?table=".$tb_name.">".$tb_name."</a><br>";
//列出所有的表格
$i++;}
?>
</body>
</html>

文件二、Backup.php
<?if ($table=="") header("Location:listtable.php");?><html>
<head>
<title>使用XML备份Mysql数据库</title>
<meta http-equiv="Content-Type" content="text/html; charset=GB2312">
</head>
<body bgcolor="#FFFFFF" text="#000000">
<?
$con=mysql_connect('localhost','root','xswlily');
$query="select * from $table ";
//数据库查询
$result=mysql_db_query("embed",$query,$con);
$filestr="<"."?xml version=\"1.0\" encoding=\"GB2312\"?".">";
$filestr.="<".$table."s>";
while ($row=mysql_fetch_array($result))
//列出所有的记录
{$filestr.="<".$table.">";
$fields=mysql_list_fields("embed",$table,$con);
$j=0;
//$num_fields=mysql_field_name($fields,$j);
//echo $num_fields;
while ($j<mysql_num_fields($fields)){
$num_fields=mysql_field_name($fields,$j);
$filestr.="<".$num_fields.">";
$filestr.=$row[$j];
$filestr.="</".$num_fields.">";
$j++;}
$filestr.="</".$table.">";
}
$filestr.="</".$table."s>";
echo $filestr;
//以下是文件操作代码
$filename=$table.".xml";
$fp=fopen("$filename","w");
fwrite($fp,$filestr);
fclose($fp);
Echo "数据表".$table."已经备份成功!";?>
</body>
</html>

通过以上文件的操作就可以实现对数据库中选定的表格进行备份.
以上主要介绍了两中方式的通过XML备份数据库的操作方法,其实并不复杂,通过XML,我们可以备份各种各样的数据库,当然也可以通过相关的方法将备份的XML文档恢复到数据库中,这里就不详细描述了。
2、 在不同的数据库之间交换数据
XML的另外一个特性就是可以用于在不同的数据库中交换数据,就象上面描述的一样,我们可以将一个系统中的某种类型数据库文件用XML导出,然后到另外一个系统中的其他数据库中将数据进行导入就可以了,XML使得跨平台的不同数据库之间的数据交换变得更加方便。
如果我们要将Oracle中的数据发送给Sql Server?如果我们不使用XML,一切将非常复杂,而使用XML将Oqacle中的数据封装在一个XML文件中就可以被另外的数据库系统读入,如SQL Server.
3、 显示数据
由于XML本身只关注内容,因此对于显示数据,它自己本身并不能进行,XML的数据显示方式也特别多,可以通过CSS(Cascading Style Sheet),XSL(extensible Stylesheet Language)或者Data Binding(数据绑定)等多种方式来显示。
由于XML是数据和样式分离的,所以,我们可以按照我们自己的想象任意改变数据的显示格式而不用对XML文档进行任何操作,这一切将使数据边得更加的灵活和自由。
由于XML的显示详细描述起来比较复杂,这里就不详细介绍了。
4、 本身作为数据存储 其实我们刚才在介绍利用XML来备份数据库的时候忘了介绍一点,XML本身就可以用来进行数据的存储,其实在下面的情况里面使用XML来存储数据是非常好的。
信息数据比较复杂:
其实一个复杂的数据并不一定能够很好的通过数据库来显示,但可以很好的用XML来显示。比如一个书籍的记录,通常会有书的名字和作者,如果书的作者只有一个,可以非常方便的使用数据库来显示,但是如果一本书有两个、三个或者更多的作者了,这个时候,XML可以很轻松的解决
单独的字段复杂而庞大
同样对于刚才说的书的记录问题,如果我们要将书的每一章都放到数据库里面并不是能够很好的存储,数据库的每个字段等长,会浪费很大的空间.
数据类型和搜索速度并不重要
当然使用XML也有一定的问题,尽管XML的搜索已经进行了很大的优化,可是速度仍然很慢。而且XML中所有的数据是通过字符串来进行存储的,因此对于数据类型要求非常重要的数据而言,使用XML来存储也不是非常合适的。
数据库不大,但要可扩展
另外,由于XML良好的可扩展性,XML还适用于小型的而且需要不断进行修改的数据存储。
另外,如果你的系统有多个服务器和数据库系统,就可以使用XML了,XML可以轻松的将数据从Linux转移到Windows平台上。另外,还可以考虑将XML作为数据库做为长期存储的选择。
回页首
什么时候不用XML进行数据存储
通过前面的使用XML进行数据存储的对比,我们也应该知道什么时候不适合使用XML进行数据存储,如果我们对数据库的查询有很高的要求,XML是不适合的,另外如果存储数据的数据类型很重要的情况下,XML也是不适合的。
任何一项技术都有弊端,XML也有不适合的时候,但是它将挑起所有数据的处理和传输的重任,这也是XML诞生的一个重要原因。今后,我们会在更多的产品和应用中看到XML的存在,特别是在数据传输的时候。
 

 

分享到:
评论

相关推荐

    c# XML 与实体相互转换 源代码

    在IT行业中,XML(eXtensible Markup Language)是一种用于存储和传输数据的标准化格式,尤其在应用程序之间交换数据时非常常见。C#是微软开发的一种面向对象的编程语言,广泛应用于Windows平台上的软件开发。当涉及...

    word文件批量替换(word转xml、xml转字符串、doc转docx)

    接下来,我们要讨论的是“xml转字符串”。XML文件本身是以结构化的文本形式存在的,但有时我们需要将其转换为单一的字符串,这可能是因为要存储在数据库中,或者作为网络传输的数据。这可以通过编程语言中的XML处理...

    XML数据转换

    XML(eXtensible Markup Language)是一种用于标记数据的语言,广泛应用于数据交换、配置文件、文档存储等领域。在处理XML数据时,我们经常需要进行数据转换,以便将XML格式的数据转化为其他格式,如JSON、CSV或者...

    C#操作XML文件方法举例,dataset转换XML

    通过对C#操作XML文件的深入讨论,我们不仅了解了如何创建、修改XML文件,还掌握了如何在XML与`DataSet`之间进行转换的方法。这些技能在数据处理、Web服务交互、配置文件管理等多个场景下都有着广泛的应用。掌握这些...

    javabean到XML的转换

    XML(eXtensible Markup Language)则是一种用于存储和传输数据的标记语言,广泛应用在数据交换、配置文件等领域。将JavaBean转换为XML是常见的数据序列化方式,有助于在不同系统间共享和存储对象状态。 在Java中,...

    java的xml和json相互转换工具类,亲测直接用

    它们各自有着不同的特性和应用场景,但有时我们需要将XML数据转换为JSON,或者将JSON数据转换为XML,以满足不同系统间的数据交互需求。本篇文章将详细介绍Java中如何实现XML和JSON的相互转换,并提供一个名为`XmlTo...

    DREAMWEAVER与XML综合应用

    《Dreamweaver与XML综合应用》是一本专为IT专业人士和网页设计师编写的教程,旨在深入探讨如何在Dreamweaver这个强大的网页设计工具中有效地利用XML(可扩展标记语言)来构建、管理和维护动态网站。这本书的核心内容...

    XML编程与应用教程(第2版).rar

    6. **XML与数据库**:XML作为数据存储格式在关系型数据库中的应用,如XML索引、XML存储过程和XML数据类型。 7. **XML编程实践**:通过案例分析和编程练习,让读者掌握在Java、Python、C#等编程语言中处理XML的技巧...

    json报文与XML互转

    本文将深入讲解如何在Java环境中将Java对象与JSON报文和XML报文进行转换,并讨论两者之间的互转。 首先,JSON以其简洁和易于解析的特性,成为了现代Web API首选的数据交换格式。它基于JavaScript语法,允许我们以...

    Java转换xml.rar

    XML(eXtensible Markup Language)则是一种用于标记数据的标准格式,广泛用于数据交换、配置存储等领域。当我们需要在Java应用程序中处理XML数据时,就需要进行Java与XML之间的转换。"Java转换xml.rar"这个压缩包...

    WinForm 中TreeView 互转 XML

    与此相关的,`XML`(可扩展标记语言)是一种轻量级的数据存储和交换格式,适用于保存结构化数据。在WinForm应用中,我们可能需要将`TreeView`中的数据转换为XML,以便于存储或传输,或者反过来,从XML文件中恢复`...

    xls和xml文档转换器

    使用此转换器,测试人员可以方便地将现有的Excel测试用例表格转换为XML格式,以便更好地与自动化测试框架集成,或者将从testlink导出的XML数据转换为Excel格式,以便团队成员进行离线编辑和讨论。这种灵活的数据交换...

    DS向xml转换Demo

    数据集是一种轻量级的数据存储和处理机制,常用于.NET框架中,而XML则是一种通用的数据交换格式,广泛应用于不同系统间的通信和数据存储。 首先,我们来详细解释数据集(Dataset)的概念。数据集是.NET框架中的一个...

    自己编写的json 对象与xml 和Tree之间的转换

    JSON(JavaScript Object Notation)和XML(eXtensible Markup Language)是两种广泛使用的数据交换格式,它们在web服务和应用程序之间传输数据时起到关键作用。JSON以其简洁、易读的特点,常用于前后端的数据交互,...

    XML与DataTable-DataSet互转(C#)

    本文将详细讨论如何在C#中将XML与DataTable-DataSet进行互转。 首先,我们来看如何将DataTable对象转换为XML字符串。这个过程涉及到`DataTable.WriteXml`方法,该方法接收一个XmlWriter对象,用于将DataTable的内容...

    xml分析xml分析

    XML(eXtensible Markup Language)是一种用于标记数据的语言,广泛应用在数据交换、配置文件、文档存储等领域。XML的设计目标是传输和存储数据,而非显示数据,因此它与HTML(HyperText Markup Language)的主要...

    易语言节点与XML转换模块

    在“易语言节点与XML转换模块”中,我们主要讨论的是如何在易语言环境中处理XML数据,并进行节点与XML之间的相互转换。 XML(Extensible Markup Language)是一种标记语言,广泛用于数据交换和存储,其结构清晰、...

    XML解析技术是XML应用的关键

    ### XML解析技术是XML应用的关键 #### 概述 随着信息技术的发展,XML(可扩展标记语言)作为一种标准化的数据表示和交换格式,在多个领域得到广泛应用。XML文档具备良好的结构化特性,能够实现跨平台、跨系统的...

    XML语言及应用技术.doc

    通过这样的课程设置,学生将全面理解XML的精髓,不仅能够熟练编写XML文档,还能利用XML进行数据处理和交换,从而在各种信息技术领域中发挥重要作用,如Web应用程序开发、数据库接口设计、移动应用数据存储等。

    用类来存储XMl 文件的数据-XML文件解析

    XML(eXtensible Markup Language)是一种用于标记数据的语言,广泛应用在数据交换、配置文件以及文档存储等领域。本文将深入探讨如何使用类来存储XML文件的数据,实现对XML文件的有效解析。 XML文件的结构通常包括...

Global site tag (gtag.js) - Google Analytics