当前位置导航:炫浪网>>网络学院>>网页制作>>XML/WebService教程

让XML在ASP中发挥其长处

微软的ASP.NET跟XML紧密结合,不可分割,可见XML在日后程序设计中的重要性。

在ASP中,也能让XML发挥其优点。例如像.NET那样写一个XML配置文件,在程序中读取,或者将一些数据量不

大又经常访问的数据写入到XML中,经过转换后生成HTML。这样的话能够减少程序与数据库的频繁连接,提高网站的运行速度。

下面是从数据库中读取数据,并生成XML的一段代码:

<%

response.ContentType = "text/xml"

set conn=Server.CreateObject("ADODB.Connection")

conn.provider="Microsoft.Jet.OLEDB.4.0;"

conn.open server.mappath("/db/database.mdb")

sql="select fname,lname from tblGuestBook"

set rs=Conn.Execute(sql)

rs.MoveFirst()

response.write("<?xml version='1.0' encoding='ISO-8859-1'?>")

response.write("<guestbook>")

while (not rs.EOF)

response.write("<guest>")

response.write("<fname>" & rs("fname") & "</fname>")

response.write("<lname>" & rs("lname") & "</lname>")

response.write("</guest>")

rs.MoveNext()

wend

rs.close()

conn.close()

response.write("</guestbook>")

%>

下面是作者搜集和整理后的一些读取XML文件的公用函数:

<%

'解析一个xml文件的公用函数集合

dim document

'装载一个xml文档,函数名Loaddocument(文件名)

function LoadDocument(filename)

xmlfile=server.Mappath(filename)

Set document = Server.CreateObject("Microsoft.XMLDOM")

document.async = false

document.load(xmlfile)

end function

'查询一个节点里的文本内容,函数名SelectXmlNodeText(节点名称)

function SelectXmlNodeText(elementname)

elementname="//"&elementname

temp=document.selectSingleNode(elementname).text

selectXmlNodeText= server.htmlencode(temp)

end function

'根据属性名查找一个节点的属性值,函数名FindAtrributeValue(节点名称,属性名称)

function FindAtrributeValue(elementname,atrributename)

elementname="//"&elementname

atrributename=atrributename

set NodeObj=document.selectSingleNode(elementname)

FindAtrributeValue=NodeObj.GetAttributeNode(atrributename).Nodevalue

end function

 

'取得某个节点的子节点的个数,函数名GetNodesNumber(节点名称)

function GetNodesNumber(elementname)

elementname="//"&elementname

set objnodes=document.SelectSingleNode(elementname).ChildNodes

GetNodesNumber=objnodes.length

'set objnodes=nothing

end function

'以一个OBJ的形式返回一个节点的第I个子节点,函数名GetObjChildNode(根节点名称,参数I)

function GetObjChildNodes(elementname,i)

elementname="//"&elementname

set objnodes=document.SelectSingleNode(elementname)

if objnodes.ChildNodes.length<i then

response.Write("参数越界")

else

set GetObjChildNodes=objnodes.childNodes(i-1)

end if

end function

'函数入口为一个节点对象,出口是在入口节点对象的基础做为根节点,返回的第i个子节点对象(OBJ)

function GetObjChildNode(obj,i)

if IsObject(obj) then

if obj.ChildNodes.length>0 then

set GetObjChildNode=obj.ChildNodes(i)

end if

end if

end function

'如果一个节点对象(OBJ)有孩子节点,该函数返回其孩子个数,即记录集长度

function GetObjChildNodesNumber(obj)

if obj.ChildNodes.length>0 then

GetObjChildNodesNumber=obj.ChildNodes.length

else

GetObjChildNodesNumber=0

end if

end function

'获取一个节点对象(OBJ)的属性值,函数入口为属性名

function GetObjAtrValue(obj,atrributename)

GetObjAtrValue=obj.GetAttributeNode(atrributename).Nodevalue

end function

'获取一个节点对象(OBJ)的属性值,函数入口为obj名称

function GetObjText(obj)

GetObjText=obj.text

end function

'遍历一个节点所有的子节点

function OverViewNodes(elementname)

end function

'获取一个节点属性的名称

function GetNodeAtrributeName()

end function

'获取一个子节点的名称

function GetChildNodeName()

end function

'Loaddocument("GetHotelDetailsResponse.xml")

'response.Write(FindAtrributeValue("Image","path")&"<br>")

'response.Write(GetNodesNumber("RoomType")&"<br>")

'response.Write(GetObjChildNodes("RoomType",2).nodename&"<br>")

%>

相关内容
赞助商链接