主頁(yè) > 知識(shí)庫(kù) > 用XML數(shù)據(jù)島結(jié)合Dom制作通訊錄

用XML數(shù)據(jù)島結(jié)合Dom制作通訊錄

熱門(mén)標(biāo)簽:南寧網(wǎng)絡(luò)外呼系統(tǒng)運(yùn)營(yíng)商 隨州外呼調(diào)研系統(tǒng) 微信地圖標(biāo)注合并了 r語(yǔ)言數(shù)據(jù)可視化地圖標(biāo)注 400電話(huà)辦理包年 東營(yíng)電銷(xiāo) 高德地圖地圖標(biāo)注服務(wù)中心 如何修改多個(gè)百度地圖標(biāo)注 本地電話(huà)機(jī)器人

一般情況下,如果要為網(wǎng)站提供一個(gè)通訊錄程序,需要使用CGI結(jié)合后臺(tái)數(shù)據(jù)庫(kù)技術(shù),這對(duì)WEB服務(wù)器的要求比較高,在很多不提供數(shù)據(jù)庫(kù)功能的虛擬主機(jī)上甚至無(wú)法實(shí)現(xiàn)。當(dāng)然,我們還可以采用TXT文本替代數(shù)據(jù)庫(kù),但TXT文本是比較難操作的,我們必須一行一行的讀取判斷,還要用分隔字符串實(shí)現(xiàn)字段分離,無(wú)法進(jìn)行復(fù)雜運(yùn)算。
現(xiàn)在,我們可以使用“可擴(kuò)展的標(biāo)記語(yǔ)言 (XML)” 來(lái)保存通訊錄的數(shù)據(jù),從而體現(xiàn)出XML的優(yōu)點(diǎn):表現(xiàn)數(shù)據(jù)的結(jié)構(gòu)化方法,對(duì)于保存許多關(guān)系型數(shù)據(jù)結(jié)構(gòu)的文件很有幫助。

一、基本原理:
在Microsoft Internet Explorer 5.0及以后的版本里,我們可以利用XML元素來(lái)創(chuàng)建數(shù)據(jù)島,數(shù)據(jù)島就是被HTML頁(yè)面引用或包含的XML數(shù)據(jù),XML數(shù)據(jù)可以包含在HTML文件內(nèi),也可以包含在某外部文件內(nèi),利用XML數(shù)據(jù)島可以讓我們免除編寫(xiě)復(fù)雜腳本的麻煩。DOM可對(duì)XML文檔進(jìn)行解析,文檔中的元素、實(shí)體、屬性等所有個(gè)體都可以用對(duì)象模型表示,整個(gè)文檔的邏輯結(jié)構(gòu)類(lèi)似一棵樹(shù),生成的對(duì)象模型就是樹(shù)的節(jié)點(diǎn),每個(gè)對(duì)象同時(shí)包含了方法和屬性,DOM提供了許多查找節(jié)點(diǎn)的方法。利用DOM,開(kāi)發(fā)人員可以動(dòng)態(tài)地創(chuàng)建XML、遍歷文檔、增加(刪除/修改)文檔內(nèi)容,DOM提供的API與編程語(yǔ)言無(wú)關(guān),所以對(duì)一些DOM標(biāo)準(zhǔn)中沒(méi)有明確定義的接口,不同解析器的實(shí)現(xiàn)方法可能會(huì)有所差別。

二、具體流程為:
1、定義XML文件如下所示:
  ?xml version="1.0" encoding="gb2312"?>
    中國(guó)計(jì)算機(jī)世界出版服務(wù)公司通信錄>
      計(jì)算機(jī)世界 contactID="2">
        部門(mén)名稱(chēng)>計(jì)算機(jī)室/部門(mén)名稱(chēng)>
        電話(huà)號(hào)碼>139/電話(huà)號(hào)碼>
        電子郵件>fsdos@163.net/電子郵件>
      /計(jì)算機(jī)世界>
    /中國(guó)計(jì)算機(jī)世界出版服務(wù)公司通信錄>
將上述XML文檔保存為tele.xml文件,同時(shí),將上述XML文檔中的字段內(nèi)容置空,做為初始化框架數(shù)據(jù),另存為newid.xml文件。
2、客戶(hù)端加載 XML 文檔,在放置通訊錄的表格中通過(guò)DATASRC='#xmldso'將XML文件綁定在表格中,DATASRC屬性實(shí)際上是通過(guò)在要處理的XML元素的ID屬性的前面加上#來(lái)實(shí)現(xiàn)的,所以我們可以在TD元素中間指定具體需要顯示的字段;
3、使用DOM技術(shù)對(duì)通訊錄進(jìn)行增加、刪除記錄操作;
4、通過(guò)XMLHTTP協(xié)議連接到服務(wù)器,保存XML文檔。

三、XML DOM編程簡(jiǎn)述:
1、客戶(hù)端dom.htm頁(yè)面:
HTML>BODY bgColor=#a1bae6>
XML id=xmldso src="tele.xml">/XML>
XML id=newid>/XML> !--加載xml數(shù)據(jù)-->
SCRIPT Language=JavaScript>
newid.async = false;
newid.load("newid.xml");
//增加記錄;
function addID(){
var doc=xmldso.XMLDocument
var rootnode=doc.documentElement
var sortNode = rootnode.selectNodes("http://部門(mén)名稱(chēng)")
var currentid = sortNode.length-1
var cc=sortNode.item(currentid).text;
if ((cc=="尚未輸入")||(cc==""))
{
alert("請(qǐng)將最后一行數(shù)據(jù)填寫(xiě)完畢后再增加新的記錄!");
}
else

var node= newid.documentElement.childNodes(0).cloneNode(true);
var contactID=parseInt(sortNode.item(currentid).parentNode.getAttribute("contactID"))+1; 
node.setAttribute("contactID",contactID); 
xmldso.documentElement.appendChild(node);
}
}
//刪除記錄
function delID(whichFld){
var sortNode = xmldso.selectSingleNode("http://計(jì)算機(jī)世界[@contactID='"+whichFld+"']");
if (sortNode.parentNode.childNodes.length>1) sortNode.parentNode.removeChild(sortNode); 
}
/SCRIPT>
script language="vbscript">
Sub cc_onmouseup '保存記錄;
Dim objXML, objXSL, objFSO,strFile, strFileName, strXSL,strURL,TheForm
set SaveXMLDoc=xmldso.XMLDocument
strURL="dns2.asp"
Set objXML = CreateObject("Microsoft.XMLHTTP") '創(chuàng)建MS的XMLHTTP組件;
objXML.Open "post",strURL,false '采用Post提交方式;
objXML.setrequestheader "content-type","application/x-www-form-urlencoded"
objXML.send SaveXMLDoc ' 發(fā)送信息,保存XML數(shù)據(jù);
'xmlGet = objXML.responsebody '稍等片刻后,得到服務(wù)器端傳回來(lái)的結(jié)果;
msgbox "保存成功!" 
Set objXML = Nothing
end sub 
/SCRIPT>
center>b>計(jì)算機(jī)世界----通信錄/b>br>br>
TABLE id="table" DATASRC='#xmldso' BORDER CELLPADDING=3>
!--進(jìn)行數(shù)據(jù)綁定-->
THEAD>TH>編號(hào)/TH>TH>部門(mén)名稱(chēng)/TH>TH>電話(huà)號(hào)碼/TH>TH>電子郵件/TH>/THEAD>
TR>
TD>acronym title='點(diǎn)擊即可刪除該記錄'>INPUT TYPE=button size=4 DATAFLD="contactID" onclick="delID(this.value)">/acronym>/TD>
TD>INPUT TYPE=TEXT DATAFLD="部門(mén)名稱(chēng)">/TD>
TD>INPUT TYPE=TEXT DATAFLD="電話(huà)號(hào)碼">/TD> 
TD>INPUT TYPE=TEXT DATAFLD="電子郵件">/TD>
/TR>
/TABLE>
INPUT TYPE=BUTTON name=dd id=dd VALUE="增加記錄" onmouseover="this.focus()" onmousedown="addID();">
INPUT TYPE=BUTTON name=cc id=cc VALUE="保存">/center>/BODY>/HTML>

2、服務(wù)器端dns2.asp程序比較簡(jiǎn)單,在接收到XML數(shù)據(jù)后,創(chuàng)建文件對(duì)象,保存到tele.xml即可:

Set ReceivedDoc = CreateObject("Microsoft.XMLDOM") '創(chuàng)建 XML DOM實(shí)例;
ReceivedDoc.async=False
ReceivedDoc.load Request '接收XML數(shù)據(jù);
Set files=Server.CreateObject("Scripting.FileSystemObject")
Set numtxt=files.CreateTextFile(Server.MapPath("tele.xml"),True)
numtxt.WriteLine(replace(ReceivedDoc.xml,"?>"," encoding=""gb2312""?>")) '將XML數(shù)據(jù)寫(xiě)入文件
numtxt.Close
response.write ReceivedDoc.xml
>

3、實(shí)際使用過(guò)程中,還需要增加一個(gè)顯示通訊錄的網(wǎng)頁(yè)index.htm,其實(shí)就是上面dom.htm的簡(jiǎn)化版,去除所有增加、刪除、修改和保存功能,只在表格單元格中用LABEL顯示數(shù)據(jù):
HTML>BODY bgColor=#a1bae6>
XML id=xmldso src="tele.xml">/XML>
center>b>計(jì)算機(jī)世界----通信錄/b>br>br>
TABLE id="table" DATASRC='#xmldso' BORDER CELLPADDING=3>
THEAD>TH>編號(hào)/TH>TH>部門(mén)名稱(chēng)/TH>TH>電話(huà)號(hào)碼/TH>TH>電子郵件/TH>
/THEAD>
TR>
TD>label DATAFLD="contactID">/label>/TD>
TD>label DATAFLD="部門(mén)名稱(chēng)">/label>/TD>
TD>label DATAFLD="電話(huà)號(hào)碼">/label>/TD> 
TD>label DATAFLD="電子郵件">/label>/TD>
/TR>
/TABLE>
/center>/BODY>/HTML>

四、使用XML數(shù)據(jù)島結(jié)合Dom技術(shù)的優(yōu)點(diǎn):
1、首先,當(dāng)然是XML本身帶來(lái)的好處。XML打破了標(biāo)記定義的壟斷,你可以自定義字段名稱(chēng),在本文所用的XML文件中,連字段名都可以為中文,數(shù)據(jù)非常地簡(jiǎn)單明晰,因?yàn)樗鶖y帶的信息不是顯示上的描述,而是信息的語(yǔ)意,極大的加強(qiáng)了文檔的可讀性。使用XML也便于不同系統(tǒng)之間信息的傳輸。
2、XML數(shù)據(jù)島允許用戶(hù)在客戶(hù)端訪(fǎng)問(wèn)與操控?cái)?shù)據(jù)集,不必頻繁的與服務(wù)器交互,這對(duì)于減輕服務(wù)器的負(fù)荷很有幫助。同時(shí),由于XML數(shù)據(jù)島本身的特點(diǎn),使得在客戶(hù)端的數(shù)據(jù)操作十分簡(jiǎn)便,減少了編程量。
3、DOM強(qiáng)制使用樹(shù)模型來(lái)訪(fǎng)問(wèn)XML文檔中的信息,由于XML本質(zhì)上就是一種分層結(jié)構(gòu),所以這種描述方法是相當(dāng)有效的。通過(guò)DOM接口,應(yīng)用程序可以在任何時(shí)候訪(fǎng)問(wèn)XML文檔中的任何一部分?jǐn)?shù)據(jù),控制起來(lái)相當(dāng)靈活。
4、采用xmlhttp對(duì)象傳送XML數(shù)據(jù)到服務(wù)器,客戶(hù)端頁(yè)面無(wú)閃爍刷新現(xiàn)象。

本程序在基于Windows2000平臺(tái)的IIS5.0和IE5.0上運(yùn)行通過(guò)。在實(shí)際運(yùn)用過(guò)程中,還可使用DOM結(jié)合XSL技術(shù)為通訊錄增加排序、格式轉(zhuǎn)換和數(shù)據(jù)查找等功能,使用XML數(shù)據(jù)島的datapagesize屬性以及previousPage、nextPage函數(shù)為通訊錄增加分頁(yè)功能,使用DTD與XML Schema動(dòng)態(tài)驗(yàn)證通訊錄數(shù)據(jù)。

 

------------------------THE END----------------------

 


附:(全部源程序)
****************************************************************************
一、index.htm(顯示通訊錄):
HTML>BODY bgColor=#a1bae6>
XML id=xmldso src="tele.xml">/XML>
center>b>計(jì)算機(jī)世界----通迅錄/b>br>br>
TABLE id="table" DATASRC='#xmldso' BORDER CELLPADDING=3>
THEAD>TH>編號(hào)/TH>TH>部門(mén)名稱(chēng)/TH>TH>電話(huà)號(hào)碼/TH>TH>電子郵件/TH>
/THEAD>
TR>
TD>label DATAFLD="contactID">/label>/TD>
TD>label DATAFLD="部門(mén)名稱(chēng)">/label>/TD>
TD>label DATAFLD="電話(huà)號(hào)碼">/label>/TD> 
TD>label DATAFLD="電子郵件">/label>/TD>
/TR>
/TABLE>
/center>/BODY>/HTML>
****************************************************************************
二、dom.htm(在線(xiàn)編輯通訊錄):
HTML>BODY bgColor=#a1bae6>
XML id=xmldso src="tele.xml">/XML>
XML id=newid>/XML>
SCRIPT Language=JavaScript>
newid.async = false;
newid.load("newid.xml");
function addID(){
var doc=xmldso.XMLDocument
var rootnode=doc.documentElement
var sortNode = rootnode.selectNodes("http://部門(mén)名稱(chēng)")
var currentid = sortNode.length-1
var cc=sortNode.item(currentid).text;
if ((cc=="尚未輸入")||(cc==""))
{
alert("請(qǐng)將最后一行數(shù)據(jù)填寫(xiě)完畢后再增加新的記錄!");
}
else

var node= newid.documentElement.childNodes(0).cloneNode(true);
var contactID=parseInt(sortNode.item(currentid).parentNode.getAttribute("contactID"))+1; 
node.setAttribute("contactID",contactID); 
xmldso.documentElement.appendChild(node);
}
}
function delID(whichFld){
var sortNode = xmldso.selectSingleNode("http://計(jì)算機(jī)世界[@contactID='"+whichFld+"']");
if (sortNode.parentNode.childNodes.length>1) sortNode.parentNode.removeChild(sortNode); 
}
/SCRIPT>
script language="vbscript">
Sub cc_onmouseup '當(dāng)點(diǎn)擊“保存”按鈕時(shí)觸發(fā);
Dim objXML, objXSL, objFSO,strFile, strFileName, strXSL,strURL,TheForm
set SaveXMLDoc=xmldso.XMLDocument
strURL="dns2.asp"
Set objXML = CreateObject("Microsoft.XMLHTTP") '創(chuàng)建MS的XMLHTTP組件;
objXML.Open "post",strURL,false '采用Post提交方式;
objXML.setrequestheader "content-type","application/x-www-form-urlencoded"
objXML.send SaveXMLDoc ' 發(fā)送信息
'xmlGet = objXML.responsebody '稍等片刻后,得到服務(wù)器端傳回來(lái)的結(jié)果;
msgbox "保存成功!" 
Set objXML = Nothing
end sub 
/SCRIPT>
center>b>計(jì)算機(jī)世界----通信錄/b>br>br>
TABLE id="table" DATASRC='#xmldso' BORDER CELLPADDING=3>
THEAD>
TH>編號(hào)/TH>
TH>部門(mén)名稱(chēng)/TH>
TH>電話(huà)號(hào)碼/TH>
TH>電子郵件/TH>
/THEAD>
TR>
TD>acronym title='點(diǎn)擊即可刪除該記錄'>INPUT TYPE=button size=4 DATAFLD="contactID" onclick="delID(this.value)">/acronym>/TD>
TD>INPUT TYPE=TEXT DATAFLD="部門(mén)名稱(chēng)">/TD>
TD>INPUT TYPE=TEXT DATAFLD="電話(huà)號(hào)碼">/TD> 
TD>INPUT TYPE=TEXT DATAFLD="電子郵件">/TD>
/TR>
/TABLE>
INPUT TYPE=BUTTON name=dd id=dd VALUE="增加記錄" onmouseover="this.focus()" onmousedown="addID();">
INPUT TYPE=BUTTON name=cc id=cc VALUE="保存">/center>/BODY>/HTML>
****************************************************************************
三、dns2.asp(后臺(tái)保存通訊錄):
%
Set ReceivedDoc = CreateObject("Microsoft.XMLDOM")
ReceivedDoc.async=False
ReceivedDoc.load Request
Set files=Server.CreateObject("Scripting.FileSystemObject")
Set numtxt=files.CreateTextFile(Server.MapPath("tele.xml"),True)
numtxt.WriteLine(replace(ReceivedDoc.xml,"?>"," encoding=""gb2312""?>"))
numtxt.Close
response.write ReceivedDoc.xml
%>
****************************************************************************
四、tele.xml(通訊錄XML文檔):
?xml version="1.0" encoding="gb2312"?>
中國(guó)計(jì)算機(jī)世界出版服務(wù)公司通信錄>
計(jì)算機(jī)世界 contactID="1">
部門(mén)名稱(chēng)>電話(huà)總機(jī)/部門(mén)名稱(chēng)>
電話(huà)號(hào)碼>010-68130909/電話(huà)號(hào)碼>
電子郵件>webmaster@ccw.com.cn/電子郵件>
/計(jì)算機(jī)世界>
/中國(guó)計(jì)算機(jī)世界出版服務(wù)公司通信錄>
****************************************************************************
五、newid.xml(通訊錄XML初始化文檔):
?xml version="1.0" encoding="gb2312"?>
中國(guó)計(jì)算機(jī)世界出版服務(wù)公司通信錄>
計(jì)算機(jī)世界 contactID="1">
部門(mén)名稱(chēng)>尚未輸入/部門(mén)名稱(chēng)>
電話(huà)號(hào)碼>保密/電話(huà)號(hào)碼>
電子郵件>保密/電子郵件>
/計(jì)算機(jī)世界>
/中國(guó)計(jì)算機(jī)世界出版服務(wù)公司通信錄>

標(biāo)簽:宿遷 西雙版納 黃石 益陽(yáng) 寧夏 果洛 德州 拉薩

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《用XML數(shù)據(jù)島結(jié)合Dom制作通訊錄》,本文關(guān)鍵詞  用,XML,數(shù)據(jù),島,結(jié)合,Dom,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問(wèn)題,煩請(qǐng)?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無(wú)關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《用XML數(shù)據(jù)島結(jié)合Dom制作通訊錄》相關(guān)的同類(lèi)信息!
  • 本頁(yè)收集關(guān)于用XML數(shù)據(jù)島結(jié)合Dom制作通訊錄的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章