大雀软件园

首页 软件下载 安卓市场 苹果市场 电脑游戏 安卓游戏 文章资讯 驱动下载
技术开发 网页设计 图形图象 数据库 网络媒体 网络安全 站长CLUB 操作系统 媒体动画 安卓相关
当前位置: 首页 -> 技术开发 -> XML专区 -> 用XML数据岛结合Dom制作通讯录

用XML数据岛结合Dom制作通讯录

时间: 2021-07-31 作者:daque

普遍情景下,即使要为网站供给一个通信录步调,须要运用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("//部分称呼") 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"> <部分称呼>尚未输出</部分称呼> <电话号子>窃密</电话号子> <电子邮件>窃密</电子邮件> </计划机寰球> </华夏计划机寰球出书效劳公司通讯录>

热门阅览

最新排行

Copyright © 2019-2021 大雀软件园(www.daque.cn) All Rights Reserved.