日期:2014-05-18  浏览次数:20516 次

XML与数据库
在网上看到了XML相关的知识,网上说得是如何方便,功能如何强大,如何存储数据与传递数据与修改数据等等…
看了一部分,觉得有道理

看着看着,不免想起了数据库,说的不正和数据库有同样的功能吗

沉思回想,小弟有这样的问题请教大虾们:
使用XML能达到数据库相关存储数据的功能,它能有数据库强大吗,是否能取代数据库?
再者,各位能不能给小弟一个例子,让一个XML文件能通过浏览器打开显示出来,小弟做了这样一个XML文件:内容如下:
<?xml   version= "1.0 "   encoding= "GB2312 "?>
<MyInfor>
      <Name> 青山 </Name>
      <Age> 26 </Age>
      <Sex> 男 </Sex>
</MyInfor>

如果直接双击XML文件在浏览器中显示,显示的是上面的XML文件源文件,并没有显示相关的数据啊,如何使用什么方法或工具显示XML文件中的数据呢


------解决方案--------------------
http://msdn.microsoft.com/library/chs/default.asp?url=/library/CHS/vbcon/html/vboriVisualBasicInActionEndtoEndSolutions.asp
------解决方案--------------------
这是2003里面写的
private void Page_Load(object sender, System.EventArgs e)
{
//getXmlReader();
getXmlDataSet();
getXmlData();
}

void getXmlReader()
{
SqlConnection cn=new SqlConnection( "server=.;database=pubs;uid=sa;pwd= ");
SqlCommand cmd=new SqlCommand( "select * from titles for xml auto ",cn);
cn.Open();
XmlReader xr=cmd.ExecuteXmlReader();
StreamWriter sw=new StreamWriter(Server.MapPath( "titles1.xml "));
sw.WriteLine( " <?xml version= '1.0 '> ");
sw.Write( " <panda> ");
while(xr.Read())
{
sw.Write(xr.ReadOuterXml());
}
sw.Write( " </panda> ");
xr.Close();
cn.Close();
sw.Close();
}

void getXmlDataSet()
{
SqlConnection cn=new SqlConnection( "server=.;database=pubs;uid=sa;pwd= ");
SqlCommand cmd=new SqlCommand( "select * from titles ",cn);
SqlDataAdapter da=new SqlDataAdapter(cmd);
DataSet ds=new DataSet();
da.Fill(ds);
ds.WriteXml(Server.MapPath( "titles2.xml "));
}


void getXmlData()
{
DataSet ds=new DataSet();
ds.ReadXml(Server.MapPath( "titles2.xml "));
DataGrid1.DataSource=ds;
DataGrid1.DataBind();
}

------解决方案--------------------
据说xml可以描述任何结构。听说可以描述出人的DNA构成
------解决方案--------------------
楼主 查一下 xslt 专门用来对xml文件格式化的
------解决方案--------------------
显示xml文件的时候就是显示数据。xml就是个文件,数据靠你自己理解(你认为是数据数据-呵呵!)。

重点回答你前面的问题:

你的问题在于你并不懂数据库,于是认为鸡毛可以当令箭。这也比较有普遍性。

现在所有正规的数据库系统有以下功能部分(看这些的时候你自己对照一下xml文件是个什么鸡毛):

1. 具有大型磁盘操作系统扩展功能。一个数据库可能有几十个G,如果插入数据,不可能把整个文件重新写一遍吧。实际上,数据库中都是按照4K、8K之类的磁盘块去读取的,磁盘块内包含一个或者多个磁盘块。数据库系统还按照磁盘块进行高速缓冲、预读等等。内存中通常只可能放得下部分数据(如果迫使操作系统物理内存不足,就会让程序运行速度突然变慢几百倍),如果没有磁盘块为单位的存储管理机制,那么这个系统就不是给普通人用的。

2. 具有B+树等自动索引功能。只要你声明了索引,数据的更新就会自动维护索引,不需要应用程序自己维护索引。大型数据集合主要就是用来处理复杂业务逻辑的。如果查询根本不可能有B+树索引功能,那么这个数据集要么是小玩具,要么就是用于传递数据而不是用于数据查询分析。

3. 关系数据库通常具有SQL操作功能。SQL是关系数据库的“世界语”,最近20年的SQL标准(处级标准)基本上在各个关系数据库中是通用的,或者差别很细微的。你写一条inner join 7、8个表的查询,数据库的SQL分析器就会在几十种可能的查询步骤中找出最优的一种,并且编译和保存起来。

4. 具有ACID功能。这个功能怎么强调都不为过,不懂如何在事务中处理数据,就不能干处理业务数据的数据库编程这个工作。没有这个功能,对数据的处理只能在不太需要负责的,或者极其简单的业务(例如只是用于传递、备份偶尔出现的几条记录)上。

5. 具有c/s功能。数据库系统作为一个服务,可以单独工作在一个服务器上。终端与数据库之间传递命令、返回数据,而不是传递文件。
------解决方案--------------------
xml是一个表达数据的协议,就好像你的数据库中有varchar、int类型一样,作为一个字符串存在。你用它,只应该用在必须按照最差的情况来假设你的应用环境的场合。例如除了用文本文件保存字符串以外就无法使用任何一种数据库(连Access、SQLite这些都不能用)系统,那么你可以使用它进行存储;或者你根本没有任何其它高效通讯手段,只能传递字符串的时候,那么你可以使用它来通讯。虽然We