实话实说,个人接触到使用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 xmlstring 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也可以实现,做法基本相同。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)