通常,我們在數(shù)據(jù)庫中存儲數(shù)據(jù)。不過,如果希望數(shù)據(jù)的可移植性更強,我們可以把數(shù)據(jù)存儲 XML 文件中。
一、關(guān)于xml
我感覺我對于xml了解的并不多,看完了劉偉的xml視頻,主要感覺講了兩部分:一個是關(guān)于xml的簡單介紹(包括與html對比,核心是關(guān)注數(shù)據(jù)傳輸處理和包含,發(fā)展,樹形結(jié)構(gòu)和組成元素);另一部分講了關(guān)于xml的驗證:dtd和schema。下面是我看視頻做的筆記:
在看《xml網(wǎng)頁技術(shù)實用教程》和上網(wǎng)查資料的時候,讓我覺得眼前一亮的就是:xml同樣也能保存用戶信息,存儲數(shù)據(jù)。書上給的是讀者信息的保存,我覺得這個東西應(yīng)該也能用到很多地方,之前看了寫了關(guān)于session和cookie的博客,也是存儲數(shù)據(jù)的。因為在項目中xml大多用于配置文件,額,好多時候是用于鏈接數(shù)據(jù)庫啊,啥啥啥。老覺得大材小用。
二、關(guān)于數(shù)據(jù)存儲xml的代碼
第一段代碼主要是看如何創(chuàng)建并保存一個 XML 文件。主要用了XMLDOM對象來創(chuàng)建保存。關(guān)于 XMLDOM對象有很多(點擊打開鏈接)代碼如下:
<%
DimxmlDoc,?rootEl,?child1,?child2,?p
'??創(chuàng)建XML文檔
SetxmlDoc?=?Server.CreateObject("Microsoft.XMLDOM")
'創(chuàng)建根元素并將之加入文檔
SetrootEl?=?xmlDoc.createElement("root")
xmlDoc.appendChild?rootEl
'創(chuàng)建并加入子元素
Setchild1?=?xmlDoc.createElement("child1")
Setchild2?=?xmlDoc.createElement("child2")
rootEl.appendChild?child1
rootEl.appendChild?child2
'創(chuàng)建?XML?processing?instruction
'并把它加到根元素之前
Setp=xmlDoc.createProcessingInstruction("xml","version='1.0'")
xmlDoc.insertBefore?p,xmlDoc.childNodes(0)
'把文件保存到?C?目錄
xmlDoc.Save"c:\test.xml"
%>
下面是關(guān)于把數(shù)據(jù)存儲到xml文件里面的一個小demo,里面主要注冊的例子因為xml是樹結(jié)構(gòu),所以只有一個根節(jié)點,多個樹節(jié)點,層次清晰。里面加載了一個已經(jīng)建立好的xml文件,然后在注冊界面進(jìn)行注冊的時候,信息就保存到xml里面:
//創(chuàng)建一個xml文檔(rname),用于添加(讀?。┤嗣鹯eadname
XmlDocument?rname?=newXmlDocument();
//加載登錄名單的xml文檔
rname.Load(@"...\...\File\dlfile.xml");
//查找namelist節(jié)點,并把它賦給root
XmlNode?root?=?rname.SelectSingleNode("namelist");
//配置realname節(jié)點,賦給cname(childname)
XmlElement?cname?=?rname.CreateElement("realname");
//配置name節(jié)點,賦給ccname
XmlElement?ccname?=?rname.CreateElement("name");
//向ccname節(jié)點中加入內(nèi)容
ccname.InnerText?=?textBox1.Text;
cname.AppendChild(ccname);
//加入年齡
XmlElement?ccsex?=?rname.CreateElement("sex");
ccsex.InnerText?=?comboBox1.Text;
cname.AppendChild(ccsex);
//加入地址
XmlElement?ccaddress?=?rname.CreateElement("address");
ccaddress.InnerText?=?textBox3.Text;
cname.AppendChild(ccaddress);
//加入身份證號碼
XmlElement?ccid?=?rname.CreateElement("idnumber");
ccid.InnerText=textBox4.Text;
cname.AppendChild(ccid);
root.AppendChild(cname);
//加入用戶名
XmlElement?username?=?rname.CreateElement("user");
username.InnerText?=?textBox5.Text;
root.AppendChild(username);
//加入密碼
XmlElement?pwd?=?rname.CreateElement("password");
pwd.InnerText?=?textBox6.Text;
root.AppendChild(pwd);
//加入ID(employee?ID,eID)
XmlElement?eID?=?rname.CreateElement("ID");
eID.InnerText?=?comboBox2.Text;
root.AppendChild(eID);
rname.Save(@"...\...\File\dlfile.xml");
//打開主窗體,關(guān)閉當(dāng)前窗體
this.fa.Visible?=true;
this.Visible?=false;
MessageBox.Show("恭喜您注冊成功");
三、關(guān)于XML的拓展
關(guān)于XML到底能干什么,我查了好多資料,寫的都很籠統(tǒng),找了幾個比較好的:
1、可以做為數(shù)據(jù)庫存儲數(shù)據(jù) 讀操作: 假如你的web應(yīng)用程序里有一個Products.xml,你可以用DataSet來讀取這個xml,然后綁定到DataList,DataGrid等的控件上 寫操作: 如果你建立一個購物車的DataTable,就可以將它寫入到xml文件中去
2、如果你會用xsl,可以將xml整合到首頁上,讓你更新網(wǎng)頁更容易,也很容易管理,樣式改動也方便
3、關(guān)于xml的技術(shù)太多了,xpath,xquery,xslt等等,包括語音標(biāo)記、矢量圖標(biāo)記等等,詳情請參照www.w3.org 。
4、一般的說,xml已經(jīng)廣泛的應(yīng)用,你用的office軟件保存的doc,xls等等的格式背后都是xml標(biāo)記,一些矢量圖的軟件Visio,做出的圖形其實都是基于xml技術(shù)的,ajax技術(shù)也是基于xml技術(shù)的
5、忘了最重要的一個未來會大大發(fā)展的技術(shù),web services,實質(zhì)也是xml的一種應(yīng)用