如今,我们能够应用“可扩大的标记言语 (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("//部门称号") 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 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("//部门称号") 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 ' 发送信息 '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"> <部门称号>还没有输入</部门称号> <电话号码>保密</电话号码> <电子邮件>保密</电子邮件> </计算机天下> </中国计算机天下出书服务公司通信录>
以上就是用XML数据岛连系Dom制造通讯录的代码实例详解的内容,更多相干内容请关注ki4网(www.ki4.cn)!
相干文章:
php完成在线通讯录功用(附源码),通讯录源码
详解HTML5通讯录猎取指定多个人的信息的示例代码
js完成做通讯录的索引滑动显现结果和滑动显现锚点结果