旗下导航:搜·么
当前位置:网站首页 > XML教程 > 正文

经由过程XML数据岛和Dom制造通讯录的代码实例详解【XML教程】,XML,Dom,通讯录

作者:搜教程发布时间:2019-12-01分类:XML教程浏览:34评论:0


导读:平常情况下,假如要为网站供应一个通讯录顺序,须要应用CGI连系背景数据库手艺,这对WEB服务器的请求比较高,在很多不供应数据库功用的虚拟主机上以至没法完成。固然,我们还能够采纳TX...
平常情况下,假如要为网站供应一个通讯录顺序,须要应用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"> 
<部门称号>还没有输入</部门称号> 
<电话号码>保密</电话号码> 
<电子邮件>保密</电子邮件> 
</计算机天下> 
</中国计算机天下出书服务公司通信录>

以上就是用XML数据岛连系Dom制造通讯录的代码实例详解的内容,更多相干内容请关注ki4网(www.ki4.cn)!

相干文章:

php完成在线通讯录功用(附源码),通讯录源码

详解HTML5通讯录猎取指定多个人的信息的示例代码

js完成做通讯录的索引滑动显现结果和滑动显现锚点结果

标签:XMLDom通讯录


欢迎 发表评论: