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

      編輯Tag賺U幣
      教程Tag:暫無(wú)Tag,歡迎添加,賺取U幣!

      推薦:在SQLServer中用XQuery分解XML數(shù)據(jù)
        在舉例說(shuō)明如何分解上一篇文章中的數(shù)據(jù)時(shí),我們首先了解一下XQuery和它在SQL Server 2005中為開(kāi)發(fā)者提供的功能。   XQuery介紹   XQuery,也稱作XML Query,是一種查詢XML數(shù)

      一般情況下,如果要為網(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)類似一棵樹(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)名稱>計(jì)算機(jī)室</部門(mén)名稱>
              <電話號(hào)碼>139</電話號(hào)碼>
              <電子郵件>fsdos@163.net</電子郵件>
            </計(jì)算機(jī)世界>
          </中國(guó)計(jì)算機(jī)世界出版服務(wù)公司通信錄>
      將上述XML文檔保存為tele.xml文件,同時(shí),將上述XML文檔中的字段內(nèi)容置空,做為初始化框架數(shù)據(jù),另存為newid.xml文件。
      2、客戶端加載 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、客戶端dom.htm頁(yè)面:
      <HTML><BODY bgColor=#a1bae6>
      <XML id=xmldso alt="用XML數(shù)據(jù)島結(jié)合Dom制作通訊錄" src=http://www.wf0088.com/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("//部門(mén)名稱")
      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("//計(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)名稱</TH><TH>電話號(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)名稱"></TD>
      <TD><INPUT TYPE=TEXT DATAFLD="電話號(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 alt="用XML數(shù)據(jù)島結(jié)合Dom制作通訊錄" src=http://www.wf0088.com/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)名稱</TH><TH>電話號(hào)碼</TH><TH>電子郵件</TH>
      </THEAD>
      <TR>
      <TD><label DATAFLD="contactID"></label></TD>
      <TD><label DATAFLD="部門(mén)名稱"></label></TD>
      <TD><label DATAFLD="電話號(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)記定義的壟斷

      分享:用MySQL和PHP創(chuàng)建XML
      XML是作為數(shù)據(jù)交換標(biāo)準(zhǔn)而出現(xiàn)的。Java和.NET都內(nèi)在支持XML,但是其它平臺(tái)上的開(kāi)發(fā)者也不用擔(dān)心自己被這項(xiàng)技術(shù)所遺棄了。PHP就是一個(gè)頗受歡迎的支持XML的腳本環(huán)境。 在本文中,我將向你介紹利

      共2頁(yè)上一頁(yè)12下一頁(yè)
      來(lái)源:模板無(wú)憂//所屬分類:Xml教程/更新時(shí)間:2008-08-22
      相關(guān)Xml教程