利用XML开发留言板简单的例子
xml是一种基于文本格式的元标记语言,它注重对数据结构和数据意义的描述,实现了数据内容和显示样式的分离(xml+xsl),而且是与平台无关的。
由于xml注重数据内容的描述,因而,对于数据的检索非常有意义,我们不会再象html那样,检索出与我们要求无关的信息。
另一方面,xml文件是数据的载体,利用xml作为数据库,不需要访问任何数据库系统,我们可以使用任意web技术来显示我们的数据,比如html,flashmx 等。
由于世界各大计算机公司的积极参与,xml正日益成为基于互联网的数据格式新一代的标准。
下面利用xml作为数据的载体,开发一个基于xml的留言板。
首先,我们建立xml文件guestbook.xml,该文件记录了留言者的姓名、电子邮件、网址、留言内容。当然,我们也可以根据需要添加任意多的信息。文件内容如下:
<?xml version="1.0" encoding="gb2312"?>
<留言本>
<留言记录>
<留言者姓名>kai</留言者姓名>
<电子邮件>kai@hostx.org</电子邮件>
<网址>http://www.17xml.com </网址>
<留言内容>千山万水总是情,常来泡妞行不行?咔咔:_)</留言内容>
</留言记录>
</留言本>
由于目前许多服务器都支持asp,我们采用常见的asp来作为实现的工具,guestbook.asp文件如下:
<%@language="vbscript"%>
<%
'设置web页面的信息
response.buffer = true
response.expires = -1
'显示留言函数init()
'www.knowsky.com
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开发留言板简单的例子,完全是抛砖引玉,可以根据需要进行添加更多的功能,所有程序在win2000+iis5.0+ie5.5调试通过.