xml(extensible markup language)是一种基于文本格式的标记语言,它注重对数据结构和数据意义的描述,实现了数据内容和显示样式的分离,而且是与平台无关的。由于xml注重数据内容的描述,因而,对于数据的检索非常有意义,我们不会再象html那样,检索出与我们要求无关的信息。另一方面,xml文件是数据的载体,利用xml作为数据库,不需要访问任何数据库系统,我们可以使用任意web技术来显示我们的数据,比如html,flash 5 等。由于世界各大计算机公司的积极参与,xml正日益成为基于互联网的数据格式新一代的标准。下面利用xml作为数据的载体,开发一个基于xml的留言板。
首先,我们建立xml文件guestbook.xml,该文件记录了留言者的姓名、电子邮件、网址、留言内容。当然,我们也可以根据需要添加任意多的信息。文件内容如下:
<?xml version="1.0" encoding="gb2312"?>
<留言本>
<留言记录>
<留言者姓名>孟宪会</留言者姓名>
<电子邮件>amxh@testdomain.com</电子邮件>
<网址>http://go.163.com/~colorweb</网址>
<留言内容>测试成功!!</留言内容>
</留言记录>
</留言本>
由于目前许多服务器都支持asp,我们采用常见的asp来作为实现的工具,guestbook.asp文件如下:
<%@language="vbscript"%>
<%
'设置web页面的信息
response.buffer = true
response.expires = -1
'显示留言函数init()
function init()
entryform()
'定义局部变量
dim objxml
dim arrnames
dim arremails
dim arrurls
dim arrmessages
'创建xmldom文档对象,用来存放留言
set objxml = server.createobject("msxml2.domdocument")
objxml.async = false
objxml.load(server.mappath("guestbook.xml"))
'取得留言本各元素的集合
set arrnames = objxml.getelementsbytagname("留言者姓名")
set arremails = objxml.getelementsbytagname("电子邮件")
set arrurls = objxml.getelementsbytagname("网址")
set arrmessages = objxml.getelementsbytagname("留言内容")
response.write "<table border='0' width='100%'>"
response.write "<tr><td bgcolor='#00ccff' align='center' height='26'>"
response.write "<b>各位的留言如下:</b>"
response.write "</td></tr>"
'输出留言本各元素的内容,最新的留言先显示
for x=arrnames.length-1 to 0 step -1
response.write "<tr><td><a href=mailto:" & arremails.item(x).text & ">" & arrnames.item(x).text & "</a></td></tr>"
response.write "<tr><td>网址:<a href=" & arrurls.item(x).text & " target='_blank'>" & arrurls.item(x).text & "</a><td></tr>"
response.write "<tr><td>留言内容:</td></tr>"
response.write "<tr><td bgcolor='#0099ff'>" & arrmessages.item(x).text &"</td></tr>"
response.write "<tr><td> </td></tr>"
next
response.write "</table>"
set objxml = nothing
end function
'向xml文件添加留言记录的函数addentry()
function addentry()
'定义局部变量
dim strname
dim stremail
dim strurl
dim strmessage
'取得留言表单的输入内容
strname = request.form("姓名")
stremail = request.form("电子邮件")
strurl = request.form("网址")
strmessage = request.form("留言")
dim objxml
dim objentry
dim objname
dim objemail
dim objurl
dim objmessage
'向xml文件添加留言内容
set objxml = server.createobject("msxml2.domdocument")
objxml.async = false
objxml.load(server.mappath("guestbook.xml"))
set objentry = objxml.createnode("element", "留言记录", "")
objxml.documentelement.appendchild(objentry)
set objname = objxml.createnode("element", "留言者姓名", "")
objentry.appendchild(objname)
objname.text = strname
set objemail = objxml.createnode("element", "电子邮件", "")
objentry.appendchild(objemail)
objemail.text = stremail
set objurl = objxml.createnode("element", "网址", "")
objentry.appendchild(objurl)
objurl.text = strurl
set objmessage = objxml.createnode("element", "留言内容", "")
objentry.appendchild(objmessage)
objmessage.text = strmessage
objxml.save(server.mappath("guestbook.xml"))
response.redirect("guestbook.asp")
end function
'填写和发送留言表单的函数entryform()
function entryform()
response.write "<p align='center'><b>xml 留言本 例子</b></p>"
response.write "<hr color='#000099' width='100%' noshade>"
response.write "<form action=guestbook.asp?action=addentry method=post>"
response.write "<table border=1>"
response.write "<tr><td>您的姓名:</td><td><input type=text name=姓名 /></td></tr>"
response.write "<tr><td>电子邮件:</td><td><input type=text name=电子邮件 /></td></tr>"
response.write "<tr><td>您的网址:</td><td><input type=text name=网址 /></td></tr>"
response.write "<tr><td>您的留言:</td><td><textarea name=留言 cols=40 rows=5></textarea></td></tr>"
response.write "<tr><td> </td><td><input type=submit value=发布留言 /></td></tr>"
response.write "</table>"
response.write "</form>"
end function
%>
<html>
<head>
<title>xml 留言例子</title>
<meta http-equiv="content-type" content="text/html; charset=gb2312">
</head>
<body>
<%
'判断是否发送了留言,并更新留言信息
dim a
a = request.querystring("action")
if a<>"" then
addentry
else
init
end if
%>
</body>
</html>
以上是利用xml开发留言板简单的例子,可以根据需要进行添加更多的功能,所有程序在win98se+pws+ie5.5+msxml3.netscape4.75.netscape6调试通过。
Java Asp PHP .Net XML C/C++ CGI VB Jsp J2ee J2se J2me EJB Servlet Tomcat Resin Struts Weblogic Eclipse ANT GUI JMS Web servise IDEA Webphere Hibernate Spring Jboss Applet Swing Socket Javamail Perl Ajax P2P 安全 模式 框架 测试 开源 游戏
Windows XP Windows 2000 Windows 2003 Windows Me Windows 9.x Linux UNIX 注册表 操作系统 服务器 应用服务器