您的位置:首页 > 其它

XML 学习 (10)

2005-09-15 13:48 176 查看
XML技术系列讲座(10)客户机与服务器的数据交互(下)
1、XMLHTTP对象的Send方法
用Open方法对Request对象进行初始化后,调用Send方法发送XML数据:
poster.send XML-data
Send方法的参数类型是Variant,可以是字符串、DOM树或任意数据流。发送数据的方式分为同步和异步两种。在异步方式下,数据包一旦发送完毕,就结束Send进程,客户机执行其他的操作;而在同步方式下,客户机要等到服务器返回确认消息后才结束Send进程。
XMLHTTP对象中的readyState属性能够反映出服务器在处理请求时的进展状况。客户机的程序可以根据这个状态信息设置相应的事件处理方法。属性值及其含义如下表所示:
说明
0Response对象已经创建,但XML文档上载过程尚未结束
1XML文档已经装载完毕
2XML文档已经装载完毕,正在处理中
3部分XML文档已经解析
4文档已经解析完毕,客户端可以接受返回消息
2、 服务器端的数据处理
服务器在接收到客户机发送过来的数据包后,会马上处理数据,并做出相应的响应。服务器先创建一个XMLDOM对象,然后将Request对象中的数据载入,并通过XMLDOM对象开始访问XML数据。
在获得XML数据的访问入口后,首先做的事情是对XML文档进行验证(这部分的具体过程我们将在后面介绍XML Schema的时候一并说明)。一旦通过验证,就可以利用DOM接口对XML数据进行分析处理(例如:将提取的信息用来更新数据库中的记录)。
一个简单的ASP脚本如下:
<%
Set docReceived = CreateObject(“Microsoft.XMLDOM”)
docReceived.async = False
docReceived.load Request
Set rootNode = docReceived.documentElement
Set nodeCustomer = docReceived.selectSingleNode(“//customer”)
customerID = nodeCustomer.firstChild.nodeValue
……
%>
3、服务器端的响应消息
服务器在处理完XML数据之后,构造响应消息,并返回给客户机。消息的形式可以是纯文本、HTML页面、XML文档或者是嵌有XML数据岛的HTML页面。
首先来看一个HTML页面的例子,这个消息页面中包含了客户订购的信息:
<H3>Confirmation of order</H3>
<% For Each node In listOrderitem
title = node.getAttribute(“title”)
Set quantityNode = node.selectSingleNode(“quantity”)
Quantity = quantityNode.firstChild.nodeValue %>
<P> <%=title%>, <%=quantity%> </P>
<% Next %>
服务器采用XML文档作为返回消息的优点是:客户机可以利用智能程序对结构化的消息进行分析,能够更准确地理解服务器所要表达的信息。
例如:
<%
Set docResponse = CreateObject(“Microsoft.XMLDOM”)
docResponse.async = False
docResponse.load “MyFixedResponse.xml”
Response.ContentType =“text/xml”
Response.save docResponse
%>
在使用XML文档时,必须在填写Response内容之前将ContentType属性值指明为“text/xml”,表示响应消息的格式为XML。save方法的用途是将XML文档内容填充到Response对象中。
除了可以装载已存在的XML文档,还可以实时构造XML数据作为响应内容:
<% Response.ContentType=“text/xml” %>
<confirmation>
<errorcode>0</errorcode>
<shipped>
<% For Each node In listOrderitem
title = node.getAttribute(“title”)
Set quantityNode = node.selectSingleNode(“quantity”)
Quantity = quantityNode.firstChild.nodeValue %>
<item title=“<%=title%>” quantity=“<%=quantity%>” />
<% Next %>
</shipped>
</confirmation>
4、客户机处理响应信息
客户机接收到返回消息后,进行简单的处理,基本上就完成了C/S之间的一个交互周期。客户机接收响应是通过XMLHTTP对象的属性实现的:
● responseTxt:将返回消息作为文本字符串;
● responseXML:将返回消息视为XML文档,在服务器响应消息中含有XML数据时使用;
● responseStream:将返回消息视为Stream对象。
HTML页面的返回消息一般是被作为文本字符串进行处理。下面的这个例子是一个完整的交互过程,客户机脚本的代码如下:
<DIV ID=“displayArea”> </DIV>
<SCRIPT LANGUAGE=“VBScript”>
Sub Submit_OnClick()
’创建XMLDOM
Set docSubmit = CreateObject(“Microsoft.XMLDOM”)
……’如前所述构造数据包
’向服务器发送数据包
Set poster = CreateObject(“Microsoft.XMLHTTP”)
poster.open “POST”, “CustomerOrder.asp”, False
poster.send docSubmit
’接收Resoponse消息
displayArea.innerHTML = poster.responseText
End Sub
Submit_OnClick方法首先创建XMLDOM对象用来装载XML数据,然后创建XMLHTTP对象以同步方式将数据包发送给服务器。在服务器处理完毕之后返回一个HTML页面作为响应消息。XMLHTTP对象按照文本字符串方式接收消息,并把它与DIV元素绑定起来,在浏览器中显示最终结果。
响应XML数据的基本过程与上面的这个例子是一样的,只是在接收时,使用responseXML属性,然后利用DOM技术对XML消息做进一步的处理。这样,一个完整的C/S交互过程就全部结束了。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: