用XML資料島結合Dom製作通訊錄

來源:互聯網
上載者:User

一般情況下,如果要為網站提供一個通訊錄程式,需要使用CGI結合後台資料庫技術,這對WEB伺服器的要求比較高,在很多不提供資料庫功能的虛擬機器主機上甚至無法實現。當然,我們還可以採用TXT文本替代資料庫,但TXT文本是比較難操作的,我們必須一行一行的讀取判斷,還要用分隔字串實現欄位分離,無法進行複雜運算。
現在,我們可以使用“可擴充的標記語言 (XML)” 來儲存通訊錄的資料,從而體現出XML的優點:表現資料的結構化方法,對於儲存許多關係型資料結構的檔案很有協助。

一、基本原理:
在Microsoft Internet Explorer 5.0及以後的版本裡,我們可以利用XML元素來建立資料島,資料島就是被HTML頁面引用或包含的XML資料,XML資料可以包含在HTML檔案內,也可以包含在某外部檔案內,利用XML資料島可以讓我們免除編寫複雜指令碼的麻煩。DOM可對XML文檔進行解析,文檔中的元素、實體、屬性等所有個體都可以用物件模型表示,整個文檔的邏輯結構類似一棵樹,產生的物件模型就是樹的節點,每個對象同時包含了方法和屬性,DOM提供了許多尋找節點的方法。利用DOM,開發人員可以動態地建立XML、遍曆文檔、增加(刪除/修改)文檔內容,DOM提供的API與程式設計語言無關,所以對一些DOM標準中沒有明確定義的介面,不同解析器的實現方法可能會有所差別。

二、具體流程為:
1、定義XML檔案如下所示:
  <?xml version="1.0" encoding="gb2312"?>
    <中國電腦世界出版服務公司通訊錄>
      <電腦世界 contactID="2">
        <部門名稱>電腦室</部門名稱>
        <電話號碼>139</電話號碼>
        <電子郵件>fsdos@163.net</電子郵件>
      </電腦世界>
    </中國電腦世界出版服務公司通訊錄>
將上述XML文檔儲存為tele.xml檔案,同時,將上述XML文檔中的欄位內容置空,做為初始化架構資料,另存新檔newid.xml檔案。
2、用戶端載入 XML 文檔,在放置通訊錄的表格中通過DATASRC='#xmldso'將XML檔案綁定在表格中,DATASRC屬性實際上是通過在要處理的XML元素的ID屬性的前面加上#來實現的,所以我們可以在TD元素中間指定具體需要顯示的欄位;
3、使用DOM技術對通訊錄進行增加、刪除記錄操作;
4、通過XMLHTTP協議串連到伺服器,儲存XML文檔。

三、XML DOM編程簡述:
1、用戶端dom.htm頁面:
<HTML><BODY bgColor=#a1bae6>
<XML id=xmldso alt="用XML資料島結合Dom製作通訊錄" src=http://www.knowsky.com/tele.xml></XML>
<XML id=newid></XML> <!--載入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("//部門名稱")
var currentid = sortNode.length-1
var cc=sortNode.item(currentid).text;
if ((cc=="尚未輸入")||(cc==""))
{
alert("請將最後一行資料填寫完畢後再增加新的記錄!");
}
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("//電腦世界[@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") '建立MS的XMLHTTP組件;
objXML.Open "post",strURL,false '採用Post提交方式;
objXML.setrequestheader "content-type","application/x-www-form-urlencoded"
objXML.send SaveXMLDoc ' 發送資訊,儲存XML資料;
'xmlGet = objXML.responsebody '稍等片刻後,得到伺服器端傳回來的結果;
msgbox "儲存成功!" 
Set objXML = Nothing
end sub 
</SCRIPT>
<center><b>電腦世界----通訊錄</b><br><br>
<TABLE id="table" DATASRC='#xmldso' BORDER CELLPADDING=3>
<!--進行資料繫結-->
<THEAD><TH>編號</TH><TH>部門名稱</TH><TH>電話號碼</TH><TH>電子郵件</TH></THEAD>
<TR>
<TD><acronym title='點擊即可刪除該記錄'><INPUT TYPE=button size=4 DATAFLD="contactID" onclick="delID(this.value)"></acronym></TD>
<TD><INPUT TYPE=TEXT DATAFLD="部門名稱"></TD>
<TD><INPUT TYPE=TEXT DATAFLD="電話號碼"></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、伺服器端dns2.asp程式比較簡單,在接收到XML資料後,建立檔案對象,儲存到tele.xml即可:
<
Set ReceivedDoc = CreateObject("Microsoft.XMLDOM") '建立 XML DOM執行個體;
ReceivedDoc.async=False
ReceivedDoc.load Request '接收XML資料;
Set files=Server.CreateObject("Scripting.FileSystemObject")
Set numtxt=files.CreateTextFile(Server.MapPath("tele.xml"),True)
numtxt.WriteLine(replace(ReceivedDoc.xml,"?>"," encoding=""gb2312""?>")) '將XML資料寫入檔案
numtxt.Close
response.write ReceivedDoc.xml
>

3、實際使用過程中,還需要增加一個顯示通訊錄的網頁index.htm,其實就是上面dom.htm的簡化版,去除所有增加、刪除、修改和儲存功能,只在表格儲存格中用LABEL顯示資料:
<HTML><BODY bgColor=#a1bae6>
<XML id=xmldso alt="用XML資料島結合Dom製作通訊錄" src=http://www.knowsky.com/tele.xml></XML>
<center><b>電腦世界----通訊錄</b><br><br>
<TABLE id="table" DATASRC='#xmldso' BORDER CELLPADDING=3>
<THEAD><TH>編號</TH><TH>部門名稱</TH><TH>電話號碼</TH><TH>電子郵件</TH>
</THEAD>
<TR>
<TD><label DATAFLD="contactID"></label></TD>
<TD><label DATAFLD="部門名稱"></label></TD>
<TD><label DATAFLD="電話號碼"></label></TD> 
<TD><label DATAFLD="電子郵件"></label></TD>
</TR>
</TABLE>
</center></BODY></HTML>

四、使用XML資料島結合Dom技術的優點:
1、首先,當然是XML本身帶來的好處。XML打破了標記定義的壟斷

 

共2頁: 上一頁 1 [2]下一頁



相關文章

Cloud Intelligence Leading the Digital Future

Alibaba Cloud ACtivate Online Conference, Nov. 20th & 21st, 2019 (UTC+08)

Register Now >

Starter Package

SSD Cloud server and data transfer for only $2.50 a month

Get Started >

Alibaba Cloud Free Trial

Learn and experience the power of Alibaba Cloud with a free trial worth $300-1200 USD

Learn more >

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。