现在的位置: 首页 >> 网站编程 >> XML >> 用XML数据岛结合Dom制作通讯录
添加时间:2005-10-30 来源:网教中国 作者:
用XML数据岛结合Dom制作通讯录

一般情况下,如果要为网站提供一个通讯录程序,需要使用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>



[1] [2] [3]  下一页


上一篇:用XML和SQL 2000来管理存储过程调用 下一篇:包含中文字符的URL编码问题
大部分文章摘自网上,如有侵犯您的权益请与我们联系,我们会第一时间进行处理,谢谢! [ 打印文章 ] [ 关闭窗口 ]
推荐文章
·XML Schema帮你建模(3)
·UDDI(通用发现与发布规范)简介
·亲密接触XML(7)-我的属性规则
·关于 XML 的十种观点
·XML 中的常见问题 (一)
·XML轻松学习手册(7)XML相关资
·使用XSLT将XML数据转换成HTML
·用XML和JSP来创建动态站点
·在模板中指定XSL样式表
·根据查询结果,生成XML文件
相关文章
 
最新文章
·在 .NET Framework 中表示 XML
·浅析.NET下XML数据访问新机制
·XML Schema帮你建模(4)
·XML Schema帮你建模(3)
·XML Schema帮你建模(2)
·XML Schema帮你建模(1)
·微软Office2003十月发售 XML技术
·在.NET Framework中轻松处理XML(
·在.NET Framework中轻松处理XML(
·在.NET Framework中轻松处理XML(
Google