做一个网站,把数据保存在xml文件中,跟把数据保存在数据库中,区别有多大?

做一个网站,把数据保存在xml文件中,跟把数据保存在数据库中,区别有多大?,第1张

实话实说,个人接触到使用Xml文件方式来保存数据的场景少之又少。除去求学期间根据课堂要求做静态网站时用于存储一些展示性数据,还有就是在WPF开发中保存一些常用但又不经常变化的离线数据。反而常使用Xml来做配置文件(例如SpringMvc、MyBatis和LogBack)网络数据传输和交互标准(例如WebService)、工作流设计(例如Activiti6)等情况较为常见。

Xml用于单设备数据存储的情况还说得过去,例如离线数据同步可以放在Xml数据文件中。在传统行业电商平台的规格,材质,产区等属性相对固定,Xml文件能很好胜任。再比如做一个内部使用的抽奖程序,将潜在用户群体以Xml方式保存也是不错的选择吧。所以Xml文件充当小型离线数据库还行。

而数据库的范围就比较宽泛,大致可以分为关系型数据库和非关系型数据库两大类。

关系型数据库以Oracle和MySql最为流行,学过编程的朋友应该耳熟能详,也是职场面试经久不衰的考察重点。

而NoSql算是后起之秀。在业务繁多复杂的当下,一些场景下关系型数据库应付起来相当吃力,有着更为复杂分类的非关系型数据库孕育而生。NoSql在搜索引擎(ElasticSearch)、键值(redis)、面向文档(Mongodb)和列存储(Hbase)等方面都能做到得心应手。这些就让其有着更强的业务针对性,相比传统关系型数据库有着质的提升。下面简单列举几个应用场景。

Redis可用于计数、分布式锁实现、单点登录、限流和缓存数据等;

在复杂页面的数据不便以表数据结构保存时,使用Mongodb整页存储方便又简单;

Elasticsearch就是以空间换时间典型代表,在做搜索引擎和日志记录(ELK)等方面有很大优势;

Hbase不必再像关系型数据库那样以行为存储单元,而是以列为基准,非常便于数据结构拓展。

当下流行徽服务和各种解耦,连关系型数据库都不再设计外键关系,非关系型数据库大行其道,Xml文件用来保存数据显然已经不合时宜,当然也不能否认关系型数据库的地位和Xml的作用。重要数据或某些行业的特殊性还是要以关系型数据库为根基,毕竟事务、稳定性、安全性和技术恢复支持等方面需要考虑的重点。

XmlDocument xml

string path=Application.StartupPath + "\\功能测试参数.xml"

if(System.IO.File.Exists(path)){

    xml  = new XmlDocument()

    doc.Load(path) //加载XML文档

}

else

{

    xml = new XmlDocument()            //创建根节点 config    

    xml.AppendChild(xml.CreateXmlDeclaration("1.0", "utf-8", ""))    

    XmlElement one = xml.CreateElement("功能测试参数") //把根节点加到xml文档中   

   xml.AppendChild(one)

}

XmlElement two = xml.CreateElement(comboBox1.Text)

one.AppendChild(two)

XmlElement three = xml.CreateElement("测试项目")

foreach (string item in listBox1.Items)      //每次需要保存的东西

{

     string str = "项目" + i.ToString()

     i++

     three.SetAttribute(str, item)   //str=item

}

two.AppendChild(three)

xml.Save(path)

我只是知道用jdom编程实现将数据库中的数据导出为XML文件,这里有一个jsp的例子,也许有点参考作用,用的是SQL Server 2000数据库:(需要下载JDOM.jar)

<%@page contentType="text/htmlcharset=GBK"%>

<HTML> 

<HEAD> 

<TITLE>用JDOM实现数据库到XML的转换</TITLE> 

</HEAD> 

<BODY>

<%@ page import="java.sql.*" %>

<%@ page import="java.util.*" %>

<%@ page import="java.io.*" %>

<%@ page import="java.lang.*" %>

<%@ page import="com.microsoft.jdbc.sqlserver.SQLServerDriver" %>

<%@ page import="org.jdom.*" %>

<%@ page import="org.jdom.output.*" %>

 

<%

   Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver").newInstance() 

   String url="jdbc:microsoft:sqlserver://localhost:1433DatabaseName=practice" 

   String user="sa" 

   String password="123456" 

   Connection conn= DriverManager.getConnection(url,user,password) 

   Statement stmt=conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE) 

   String sql="select * from custom" 

   ResultSet rs=stmt.executeQuery(sql) 

Document document=new Document(new Element("clist"))//创建文档

ResultSetMetaData rsmd = rs.getMetaData()  //获取字段名

int numberOfColumns = rsmd.getColumnCount() //获取字段数

 int i=0

 while(rs.next()){ //将查询结果取出                        

    Element element0=new Element("cilent")  //创建元素 生成JDOM树

    document.getRootElement().addContent(element0)

    for (i=1 i<=numberOfColumnsi++)

 {   String date=new String(rs.getString(i).getBytes("ISO-8859-1"),"gb2312") //代码转换

    Element element=new Element(rsmd.getColumnName(i)).setText(date)

element0.addContent(element)

 }   

  }

 rs.close()                            //关闭结果集

 stmt.close()                               //关闭statement

conn.close()                           //关闭连接

XMLOutputter outp = new XMLOutputter("",true,"GB2312") 

outp.output(document, new FileOutputStream("D:\\Tomcat\\webapps\\learn\\jsp\\data.xml")) //输出XML文档

out.print("XML 文档生成完毕!")

%>

<a href="../jsp/data.xml">点击打开产生的XML文档 </a>

</BODY> 

</HTML>

用JAVA也可以实现,做法基本相同。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/tougao/8045181.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-12
下一篇 2023-04-12

发表评论

登录后才能评论

评论列表(0条)

保存