⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 0903-0200.htm

📁 介绍了xml相关技术和应用范围,适合初学者.
💻 HTM
字号:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<!-- saved from url=(0071)http://162.105.170.55/ASPs/GetLearningArticleTemp.asp?section=0903-0200 -->
<HTML><HEAD><TITLE>XML中国论坛 - 初学进阶 - 9.3.2 HTTPXML对象技术</TITLE>
<META http-equiv=Content-Type content="text/html; charset=gb2312">
<STYLE type=text/css>TABLE {
	FONT-SIZE: 9pt; COLOR: black; LINE-HEIGHT: 15pt; FONT-FAMILY: "宋体"
}
.pt9 {
	FONT-SIZE: 9pt; COLOR: black; LINE-HEIGHT: 15pt; FONT-FAMILY: "宋体"
}
.pt10 {
	FONT-WEIGHT: 700; FONT-SIZE: 10pt; LINE-HEIGHT: 18pt; FONT-FAMILY: "宋体"
}
.TempOutline {
	FONT-SIZE: 9pt; MARGIN-LEFT: 15pt; COLOR: #666666; TEXT-INDENT: -28pt; LINE-HEIGHT: 15pt; FONT-FAMILY: "宋体"; TEXT-DECORATION: none
}
.TempOutline1 {
	FONT-SIZE: 9pt; MARGIN-LEFT: 24pt; COLOR: #666666; TEXT-INDENT: -36pt; LINE-HEIGHT: 15pt; FONT-FAMILY: "宋体"; TEXT-DECORATION: none
}
.Outline {
	FONT-SIZE: 9pt; MARGIN-LEFT: 15pt; TEXT-INDENT: -28pt; LINE-HEIGHT: 15pt; FONT-FAMILY: "宋体"; TEXT-DECORATION: none
}
.Outline1 {
	FONT-SIZE: 9pt; MARGIN-LEFT: 24pt; TEXT-INDENT: -36pt; LINE-HEIGHT: 15pt; FONT-FAMILY: "宋体"; TEXT-DECORATION: none
}
.Outline11 {
	FONT-SIZE: 9pt; MARGIN-LEFT: 38pt; TEXT-INDENT: -50pt; LINE-HEIGHT: 15pt; FONT-FAMILY: "宋体"; TEXT-DECORATION: none
}
.passage0 {
	FONT-SIZE: 9pt; MARGIN-LEFT: 15pt; TEXT-INDENT: -28pt; LINE-HEIGHT: 15pt; FONT-FAMILY: "宋体"; TEXT-DECORATION: none
}
.passage1 {
	FONT-SIZE: 9pt; MARGIN-LEFT: 24pt; TEXT-INDENT: -36pt; LINE-HEIGHT: 15pt; FONT-FAMILY: "宋体"; TEXT-DECORATION: none
}
.passage11 {
	FONT-SIZE: 9pt; MARGIN-LEFT: 38pt; TEXT-INDENT: -50pt; LINE-HEIGHT: 15pt; FONT-FAMILY: "宋体"; TEXT-DECORATION: none
}
.passage111 {
	FONT-SIZE: 9pt; MARGIN-LEFT: 51pt; TEXT-INDENT: -64pt; LINE-HEIGHT: 15pt; FONT-FAMILY: "宋体"; TEXT-DECORATION: none
}
</STYLE>


<META content="Microsoft FrontPage 5.0" name=GENERATOR></HEAD>
<BODY vLink=#000000 aLink=#000000 link=#000000 leftMargin=0 topMargin=0 
onload=""><!-- 以下为主体内容 -->
<div align="center">
  <center>
<TABLE border=0 width="100%" style="border-collapse: collapse" bordercolor="#111111" cellpadding="0" cellspacing="0">
  <TBODY>
  <TR vAlign=top>
    <TD width=32 rowSpan=2></TD>
    <TD vAlign=center width="854">
    <p align="center"><IMG height=33 
      src="image/title_learner.gif" width=226></TD>
    <TD width=31 rowSpan=2></TD>
    </TR>
  <TR vAlign=top>
    <TD width="854" ><!-- 正文内容 -->
      <DIV class=pt10><B>9.3.2 HTTPXML对象技术</B></DIV>
 &nbsp;&nbsp;&nbsp;
      <DIV></DIV><BR>
      <DIV class=pt9>
      <P>尽管XML在多数情况下可以很好地描述数据,但是开发者有时却不得不使用CGI来进行浏览器和服务器之间的数据交换。这是,问题就出现了。从信息交换的角度来讲,虽然CGI是完全能够满足要求的,但是,当CGI同XML一起使用时就会掩盖XML自身的一些优点,从而使得XML在信息交换方面的优势无处找寻。</P>
      <P>不过,微软对此已有自己的解决方案,它提供了一种更加有效的方法来传输XML——XMLHTTP。XMLHTTP是微软的又一项基于XML的数据交换技术,主要用于在服务器与客户端交换XML数据。该技术源于微软在其XML 
      DOM实现中引入的一个重要对象——XMLHttpRequest(Microsoft.XMLHTTP),它可以为客户端提供同HTTP服务器通讯的协议支持。简而言之,它允许你打开一个到服务器上的HTTP连接,然后发送和接受数据,并且利用Microsoft 
      XML DOM对返回数据进行解析。</P>
      <P>使用XMLHTTP对象通常是进行XML数据交换,但也并不局限于此,其他格式的数据也是允许的。另外,通过同XSL相结合,XMLHTTP提供了一种便捷方式发送结构化查询字串到服务器,然后将返回结果在客户端以多种方式显示。这种交换类型的标准模式是客户端发送一个XML格式的文本字符串到服务器,然后服务器将这个字符串装载入一个XML 
      DOM对象中并进行解析,然后返回一段 
      HTML给客户端,或者是另外一段XML代码给客户端让客户端的浏览器自己解释。在这种方式下,对于信息的传递是非常有效的,尤其是当使用DHTML进行页面的动态显示时。</P>
      <P>下面的一个例子描述了XMLHTTP的上述功能。假定我们在服务器端已有一个XML实例文档client.xml。</P>
      <DIV align=center>
      <CENTER>
      <TABLE width="80%" border=1>
        <TBODY>
        <TR>
          <TD width="100%">&lt;?xml version = "1.0" encoding="GB2312" 
            standalone = "no"?&gt;<BR><BR>&lt;联系人列表&gt;<BR>&nbsp;&nbsp;&nbsp; 
            &lt;联系人&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
            &lt;姓名&gt;张三&lt;/姓名&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
            &lt;ID&gt;1&lt;/ID&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
            &lt;公司&gt;A公司&lt;/公司&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
            &lt;EMAIL&gt;zhang@aaa.com&lt;/EMAIL&gt;<BR>&nbsp;&nbsp;&nbsp; 
            &lt;/联系人&gt;<BR><BR>&nbsp;&nbsp;&nbsp; 
            &lt;联系人&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
            &lt;姓名&gt;李四&lt;/姓名&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
            &lt;ID&gt;2&lt;/ID&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
            &lt;公司&gt;B公司&lt;/公司&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
            &lt;EMAIL&gt;li@bbb.org&lt;/EMAIL&gt;<BR>&nbsp;&nbsp;&nbsp; 
            &lt;/联系人&gt;<BR>&lt;/联系人列表&gt;</TD></TR></TBODY></TABLE></CENTER></DIV>
      <P>下面的代码片段描述的是客户端发出请求界面,首先需要输入待查联系人的姓名和公司,点击"查询"按钮后,程序执行查询函数。该函数首先创建一个XMLHTTP对象——xmlHTTP,和一个XML 
      DOM对象——client,前者用于向服务器(http://localhost/Query.asp)发送XML数据(xmlHTTP.send(template.XMLDocument))和接收XML数据(xmlHTTP.responseXML.xml)。</P>
      <DIV align=center>
      <CENTER>
      <TABLE width="80%" border=1>
        <TBODY>
        <TR>
          <TD width="100%">&lt;script language="JavaScript"&gt;<BR>function 
            QueryClient(){<BR>&nbsp; var xmlHTTP = new 
            ActiveXObject("Microsoft.XMLHTTP");<BR>&nbsp; var client = 
            template.XMLDocument.documentElement;
            <P>&nbsp; xmlHTTP.Open("POST", "http://localhost/Query.asp", 
            false);</P>
            <P>&nbsp; client.childNodes.item(0).text = cliName.value;<BR>&nbsp; 
            client.childNodes.item(1).text = cliCompany.value;</P>
            <P>&nbsp; xmlHTTP.send(template.XMLDocument);<BR>&nbsp; 
            alert(xmlHTTP.responseXML.xml);<BR>}<BR>&lt;/script&gt;<BR><BR>请输入待查联系人姓名:&lt;input 
            type="text" name="cliName"&gt;<BR>请输入待查联系人公司:&lt;input type="text" 
            name="cliCompany"&gt;<BR>&lt;input type="Button" value="查询" 
            onclick="QueryClient()"&gt;</P></TD></TR></TBODY></TABLE></CENTER></DIV>
      <P>下面的代码片段(Query.asp)描述的则是服务器端的处理流程,首先创建两个XML 
      DOM对象,一个对应于XML文件client.xml(xmlClient.load(Server.MapPath("client.xml"))),另一个对应于是客户端传送的XML数据(queryClient.load(Request))。然后程序根据传送的XML数据构建XSL查询参数并进行节点定位,如果匹配成功,返回客户端查询到的XML数据;否则返回"&lt;result&gt;查无此人!&lt;/result&gt;"的XML数据。</P>
      <DIV align=center>
      <CENTER>
      <TABLE width="80%" border=1>
        <TBODY>
        <TR>
          <TD width="100%">Response.contentType = "text/xml"
            <P>set queryClient = Server.CreateObject("Microsoft.XMLDOM")<BR>set 
            xmlClient = Server.CreateObject("Microsoft.XMLDOM")</P>
            <P>queryClient.async = 
            false<BR>queryClient.load(Request)<BR>xmlClient.async = 
            false<BR>xmlClient.load(Server.MapPath("client.xml"))</P>
            <P>set xmlRoot = xmlClient.documentElement<BR>set queryRoot = 
            queryClient.documentElement</P>
            <P>queryStr = "./联系人[姓名= " &amp; queryRoot.childNodes.item(0).text 
            &amp; " and 公司= " &amp; queryRoot.childNode.item(1).text &amp; " 
            ]"<BR>set resultClient = xmlRoot.selectSingleNode(queryStr)</P>
            <P>if isNull(resultClient) = false<BR>&nbsp; then 
            Response.write(resultClient.xml)<BR>&nbsp; else 
            Response.write("&lt;result&gt;查无此人!&lt;/result&gt;")<BR>end 
        if</P></TD></TR></TBODY></TABLE></CENTER></DIV></DIV>
      <P></P>
      <P></P></TD></TR></TBODY></TABLE>
  </center>
</div>
<P></P>
<P>
<P></P></BODY></HTML>

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -