亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 學院 > 開發設計 > 正文

用XML數據島結合Dom制作通訊錄

2019-11-18 20:01:31
字體:
來源:轉載
供稿:網友

一般情況下,如果要為網站提供一個通訊錄程序,需要使用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 src="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("http://部門名稱")
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("http://計算機世界[@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 src="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打破了標記定義的壟斷,你可以自定義字段名稱,在本文所用的XML文件中,連字段名都可以為中文,數據非常地簡單明晰,因為它所攜帶的信息不是顯示上的描述,而是信息的語意,極大的加強了文檔的可讀性。使用XML也便于不同系統之間信息的傳輸。
2、XML數據島允許用戶在客戶端訪問與操控數據集,不必頻繁的與服務器交互,這對于減輕服務器的負荷很有幫助。同時,由于XML數據島本身的特點,使得在客戶端的數據操作十分簡便,減少了編程量。
3、DOM強制使用樹模型來訪問XML文檔中的信息,由于XML本質上就是一種分層結構,所以這種描述方法是相當有效的。通過DOM接口,應用程序可以在任何時候訪問XML文檔中的任何一部分數據,控制起來相當靈活。
4、采用xmlhttp對象傳送XML數據到服務器,客戶端頁面無閃爍刷新現象。

本程序在基于Windows2000平臺的IIS5.0和IE5.0上運行通過。在實際運用過程中,還可使用DOM結合XSL技術為通訊錄增加排序、格式轉換和數據查找等功能,使用XML數據島的datapagesize屬性以及PReviousPage、nextPage函數為通訊錄增加分頁功能,使用DTD與XML Schema動態驗證通訊錄數據。

 

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

 


附:(全部源程序)
****************************************************************************
一、index.htm(顯示通訊錄):
<HTML><BODY bgColor=#a1bae6>
<XML id=xmldso src="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>
****************************************************************************
二、dom.htm(在線編輯通訊錄):
<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://部門名稱")
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("http://計算機世界[@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 ' 發送信息
'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>
****************************************************************************
三、dns2.asp(后臺保存通訊錄):
<%
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"?>
<中國計算機世界出版服務公司通信錄>
<計算機世界 contactID="1">
<部門名稱>電話總機</部門名稱>
<電話號碼>010-68130909</電話號碼>
<電子郵件>webmaster@ccw.com.cn</電子郵件>
</計算機世界>
</中國計算機世界出版服務公司通信錄>
****************************************************************************
五、newid.xml(通訊錄XML初始化文檔):
<?xml version="1.0" encoding="gb2312"?>
<中國計算機世界出版服務公司通信錄>
<計算機世界 contactID="1">
<部門名稱>尚未輸入</部門名稱>
<電話號碼>保密</電話號碼>
<電子郵件>保密</電子郵件>
</計算機世界>
</中國計算機世界出版服務公司通信錄>


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
日韩在线视频观看正片免费网站| 韩国三级日本三级少妇99| 影音先锋日韩有码| 久久夜精品香蕉| 97香蕉超级碰碰久久免费的优势| 免费av一区二区| 欧美激情综合色综合啪啪五月| 91亚洲精品视频| 久热精品视频在线免费观看| 欧美精品一二区| 中文字幕av一区二区三区谷原希美| 色综合久久久久久中文网| 欧美中文字幕视频在线观看| 欧美重口另类videos人妖| 欧美久久久精品| 欧美日韩国产色| 亚洲高清久久网| 91a在线视频| 亚洲视频精品在线| 91亚洲人电影| 国产在线久久久| 91色琪琪电影亚洲精品久久| 日韩网站免费观看| 亚洲自拍小视频免费观看| 欧美最顶级丰满的aⅴ艳星| 精品视频9999| 欧美日韩不卡合集视频| 亚洲第一福利网站| 欧美与黑人午夜性猛交久久久| 久久综合免费视频影院| 欧美性猛交xxxx乱大交| 亚洲影院色在线观看免费| 69久久夜色精品国产69| 国产精品69久久| 国产精品成人在线| 91日本在线观看| www.日韩不卡电影av| 久久精品国产一区二区电影| 久久久久久av| 久久视频这里只有精品| 久久人人爽人人爽爽久久| 精品少妇v888av| 亚洲va久久久噜噜噜久久天堂| 2025国产精品视频| 成人黄色av播放免费| 日韩美女免费线视频| 欧美成人午夜影院| 精品亚洲国产视频| 中文字幕日韩欧美在线视频| 国产精品久久久久久五月尺| 尤物yw午夜国产精品视频| 日韩在线欧美在线| 揄拍成人国产精品视频| 欧美黄色免费网站| 国产一区二区三区视频免费| 色综合男人天堂| 欧美华人在线视频| 国产成人在线一区| 91日本视频在线| 91久久嫩草影院一区二区| 亚洲综合小说区| 欧美xxxx综合视频| 欧美高清视频一区二区| 亚洲专区国产精品| 久久精品视频播放| 亚州成人av在线| 欧美成人黑人xx视频免费观看| 91国内揄拍国内精品对白| 亚洲第一av网| 成人国内精品久久久久一区| 亚洲精品电影网站| 国产aaa精品| 亚洲一区美女视频在线观看免费| 精品国产乱码久久久久久婷婷| 国产欧美日韩精品在线观看| 日本不卡视频在线播放| 国产精品久久国产精品99gif| 精品久久久久久久久久久久| 亚洲最大成人网色| 91精品国产综合久久香蕉922| 日韩精品一区二区三区第95| 亚洲xxxxx电影| 亚洲欧美日韩一区在线| 亚洲一二在线观看| 欧日韩不卡在线视频| 欧美精品激情在线| 欧美大胆在线视频| 国产亚洲成av人片在线观看桃| 欧美精品videosex性欧美| 亚洲精品福利免费在线观看| 色诱女教师一区二区三区| 国产aaa精品| 欧美日韩一区免费| 亚洲精品黄网在线观看| 欧美亚洲成人精品| 国产91精品网站| 亚洲精品国产综合区久久久久久久| 国产欧美日韩免费| 啊v视频在线一区二区三区| 日韩一区二区三区xxxx| 日韩电影免费在线观看| 精品国产欧美一区二区三区成人| 日韩欧美国产黄色| 久久久久久九九九| 91在线色戒在线| 亚洲精品女av网站| 91精品国产777在线观看| 国产一区二区黄| 亚洲精品免费在线视频| 国产成人高潮免费观看精品| 欧美激情中文网| 原创国产精品91| 欧美黄色小视频| 国产欧美亚洲精品| 亚洲天堂2020| 日韩精品视频在线观看网址| 一区二区三区美女xx视频| 久久久久久久久久亚洲| 亚洲一区二区三区777| 久久资源免费视频| 欧美精品videossex性护士| 国产视频久久久久久久| 欧美大肥婆大肥bbbbb| 国产噜噜噜噜久久久久久久久| 久久久久久国产精品| 久久亚洲精品毛片| 国产精品成人av性教育| 成人做爽爽免费视频| 精品国产一区二区三区久久久| 疯狂做受xxxx欧美肥白少妇| 亚洲肉体裸体xxxx137| 国产精品国产自产拍高清av水多| 久热精品视频在线| 欧美午夜精品久久久久久久| 狠狠久久亚洲欧美专区| 成人免费视频在线观看超级碰| 久久久久久高潮国产精品视| 精品偷拍一区二区三区在线看| 亚洲欧美日本另类| 日韩美女视频中文字幕| 国产精品丝袜高跟| 久操成人在线视频| 亚洲欧美成人在线| 91国产精品91| 国产精品91视频| 久久99国产精品自在自在app| 精品露脸国产偷人在视频| 色爱av美腿丝袜综合粉嫩av| 日韩免费av一区二区| 91精品国产高清自在线| 日韩福利伦理影院免费| 欧美日韩一区二区三区在线免费观看| 国产精品国产三级国产aⅴ9色| 欧美黑人一级爽快片淫片高清| 国产成人久久久精品一区| 91黑丝在线观看| 亚洲激情中文字幕| 久久久精品网站| www.日韩欧美| 成人午夜在线视频一区| 一区二区三区国产视频| 日本成人激情视频| 久久久999精品视频| 在线观看中文字幕亚洲|