通常腊徙,我們?cè)跀?shù)據(jù)庫中存儲(chǔ)數(shù)據(jù)。不過檬某,如果希望數(shù)據(jù)的可移植性更強(qiáng)撬腾,我們可以把數(shù)據(jù)存儲(chǔ) XML 文件中。
一恢恼、關(guān)于xml
我感覺我對(duì)于xml了解的并不多民傻,看完了劉偉的xml視頻,主要感覺講了兩部分:一個(gè)是關(guān)于xml的簡單介紹(包括與html對(duì)比场斑,核心是關(guān)注數(shù)據(jù)傳輸處理和包含漓踢,發(fā)展,樹形結(jié)構(gòu)和組成元素)漏隐;另一部分講了關(guān)于xml的驗(yàn)證:dtd和schema喧半。下面是我看視頻做的筆記:
在看《xml網(wǎng)頁技術(shù)實(shí)用教程》和上網(wǎng)查資料的時(shí)候,讓我覺得眼前一亮的就是:xml同樣也能保存用戶信息青责,存儲(chǔ)數(shù)據(jù)挺据。書上給的是讀者信息的保存,我覺得這個(gè)東西應(yīng)該也能用到很多地方脖隶,之前看了寫了關(guān)于session和cookie的博客吴菠,也是存儲(chǔ)數(shù)據(jù)的。因?yàn)樵陧?xiàng)目中xml大多用于配置文件浩村,額做葵,好多時(shí)候是用于鏈接數(shù)據(jù)庫啊,啥啥啥心墅。老覺得大材小用酿矢。
二、關(guān)于數(shù)據(jù)存儲(chǔ)xml的代碼
第一段代碼主要是看如何創(chuàng)建并保存一個(gè) XML 文件怎燥。主要用了XMLDOM對(duì)象來創(chuàng)建保存瘫筐。關(guān)于 XMLDOM對(duì)象有很多(點(diǎn)擊打開鏈接)代碼如下:
<%
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ù)存儲(chǔ)到xml文件里面的一個(gè)小demo,里面主要注冊(cè)的例子因?yàn)閤ml是樹結(jié)構(gòu)铐姚,所以只有一個(gè)根節(jié)點(diǎn)策肝,多個(gè)樹節(jié)點(diǎn),層次清晰隐绵。里面加載了一個(gè)已經(jīng)建立好的xml文件之众,然后在注冊(cè)界面進(jìn)行注冊(cè)的時(shí)候,信息就保存到xml里面:
//創(chuàng)建一個(gè)xml文檔(rname)依许,用于添加(讀裙缀獭)人名readname
XmlDocument?rname?=newXmlDocument();
//加載登錄名單的xml文檔
rname.Load(@"...\...\File\dlfile.xml");
//查找namelist節(jié)點(diǎn),并把它賦給root
XmlNode?root?=?rname.SelectSingleNode("namelist");
//配置realname節(jié)點(diǎn),賦給cname(childname)
XmlElement?cname?=?rname.CreateElement("realname");
//配置name節(jié)點(diǎn),賦給ccname
XmlElement?ccname?=?rname.CreateElement("name");
//向ccname節(jié)點(diǎn)中加入內(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);
//加入身份證號(hào)碼
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("恭喜您注冊(cè)成功");
三峭跳、關(guān)于XML的拓展
關(guān)于XML到底能干什么膘婶,我查了好多資料缺前,寫的都很籠統(tǒng),找了幾個(gè)比較好的:
1悬襟、可以做為數(shù)據(jù)庫存儲(chǔ)數(shù)據(jù) 讀操作: 假如你的web應(yīng)用程序里有一個(gè)Products.xml,你可以用DataSet來讀取這個(gè)xml,然后綁定到DataList,DataGrid等的控件上 寫操作: 如果你建立一個(gè)購物車的DataTable,就可以將它寫入到xml文件中去
2衅码、如果你會(huì)用xsl,可以將xml整合到首頁上,讓你更新網(wǎng)頁更容易,也很容易管理,樣式改動(dòng)也方便
3、關(guān)于xml的技術(shù)太多了,xpath,xquery,xslt等等,包括語音標(biāo)記脊岳、矢量圖標(biāo)記等等,詳情請(qǐng)參照www.w3.org 肆良。
4、一般的說,xml已經(jīng)廣泛的應(yīng)用,你用的office軟件保存的doc,xls等等的格式背后都是xml標(biāo)記,一些矢量圖的軟件Visio,做出的圖形其實(shí)都是基于xml技術(shù)的,ajax技術(shù)也是基于xml技術(shù)的
5逸绎、忘了最重要的一個(gè)未來會(huì)大大發(fā)展的技術(shù),web services,實(shí)質(zhì)也是xml的一種應(yīng)用