XMLHTTP對象應(yīng)用開發(fā)的初體驗_Xml教程
推薦:怎樣解決xml編碼問題在VB,PHP,JAVA下的問題最近碰到一個項目,需要將申報文件存成XML的格式,編碼問題著實讓我頭疼了一會�,F(xiàn)在全部統(tǒng)一成UTF-8編碼。具體在各種語言下的操作 這里,我用DOM進行XML解析,應(yīng)為它簡單。 1 客戶首先使用VB進行編輯表單,生成一個apply.xml文件。 在VB中,使用MSXML 4.0。
MSXML中提供了Microsoft.XMLHTTP對象,能夠完成從數(shù)據(jù)包到Request對象的轉(zhuǎn)換以及發(fā)送任務(wù)。創(chuàng)建XMLHTTP對象的語句如下:Set objXML = CreateObject("Msxml2.XMLHTTP") 或
Set objXML = CreateObject(“Microsoft.XMLHTTP”)
' Or, for version 3.0 of XMLHTTP, use:
' Set xml = Server.CreateObject("MSXML2.ServerXMLHTTP")
對象創(chuàng)建后調(diào)用Open方法對Request對象進行初始化,語法格式為:
poster.open http-method, url, async, userID, password
Open方法中包含了5個參數(shù),前三個是必要的,后兩個是可選的(在服務(wù)器需要進行身份驗證時提供)。參數(shù)的含義如下所示:
http-method: HTTP的通信方式,比如GET或是 POST
url: 接收XML數(shù)據(jù)的服務(wù)器的URL地址。通常在URL中要指明 ASP或CGI程序
async: 一個布爾標識,說明請求是否為異步的。如果是異步通信方式(true),客戶機就不等待服務(wù)器的響應(yīng);如果是同步方式(false),客戶機就要等到服務(wù)器返回消息后才去執(zhí)行其他操作
userID 用戶ID,用于服務(wù)器身份驗證
password 用戶密碼,用于服務(wù)器身份驗證
XMLHTTP對象的Send方法
用Open方法對Request對象進行初始化后,調(diào)用Send方法發(fā)送XML數(shù)據(jù):
poster.send XML-data
Send方法的參數(shù)類型是Variant,可以是字符串、DOM樹或任意數(shù)據(jù)流。發(fā)送數(shù)據(jù)的方式分為同步和異步兩種。在異步方式下,數(shù)據(jù)包一旦發(fā)送完畢,就結(jié)束Send進程,客戶機執(zhí)行其他的操作;而在同步方式下,客戶機要等到服務(wù)器返回確認消息后才結(jié)束Send進程。
XMLHTTP對象中的readyState屬性能夠反映出服務(wù)器在處理請求時的進展狀況�?蛻魴C的程序可以根據(jù)這個狀態(tài)信息設(shè)置相應(yīng)的事件處理方法。屬性值及其含義如下表所示:
| 值 | 說明 |
| 0 | Response對象已經(jīng)創(chuàng)建,但XML文檔上載過程尚未結(jié)束 |
| 1 | XML文檔已經(jīng)裝載完畢 |
| 2 | XML文檔已經(jīng)裝載完畢,正在處理中 |
| 3 | 部分XML文檔已經(jīng)解析 |
| 4 | 文檔已經(jīng)解析完畢,客戶端可以接受返回消息 |
客戶機處理響應(yīng)信息
客戶機接收到返回消息后,進行簡單的處理,基本上就完成了C/S之間的一個交互周期�?蛻魴C接收響應(yīng)是通過XMLHTTP對象的屬性實現(xiàn)的:
● responseTxt:將返回消息作為文本字符串;
● responseXML:將返回消息視為XML文檔,在服務(wù)器響應(yīng)消息中含有XML數(shù)據(jù)時使用;
● responseStream:將返回消息視為Stream對象
就是下面這個很簡單的JAVASCRIPT函數(shù)SEND(STR,URL)
使用到的是XMLDOM和XMLHTTP對象.用這種技術(shù)的好處是:全JS控制,方便/簡單,比RDS或者remote好多了.(前提:服務(wù)器端和客戶端都必須安裝IE5或者更高版本),在俺貼的那個無刷新在線信息功能使用的也是這種技術(shù).有興趣的朋友可以看看。
function Send(Str,URL)
//STR參數(shù)是傳入的XML數(shù)據(jù),你也可以傳入其他文本數(shù)據(jù).
//不過這個函數(shù)需要服務(wù)器端處理之后返回XML數(shù)據(jù),你也可以修改一下
//URL參數(shù)表示你所要處理數(shù)據(jù)的ASP文件地址
{
var Http = new ActiveXObject("Microsoft.XMLHTTP") //建立XMLHTTP對象
var Dom = new ActiveXObject("Microsoft.XMLDOM") //建立XMLDOM對象
Http.open("POST",URL,false)
//第一個參數(shù)的意思是,用"POST"方式發(fā)送數(shù)據(jù).可以大到4MB,也可以換為"GET".只能256KB
//第2個參數(shù)的意思是數(shù)據(jù)發(fā)送到哪個文件處理
//第3個參數(shù)意思是同步或異步方式.TRUE為異步,FALSE為同步
Http.send(Str) //開始發(fā)送數(shù)據(jù).............嘟嘟..
Dom.async=false //設(shè)置為同步方式獲取數(shù)據(jù)
Dom.loadXML(Http.responseText)
//開始獲取服務(wù)器端處理后返回的數(shù)據(jù).我在這里設(shè)置必須為XML數(shù)據(jù),否則出錯.
//你也可以自己修改.使返回的是2進制或者記錄集數(shù)據(jù).................................
if(Dom.parseError.errorCode != 0) //檢查是否發(fā)生獲取數(shù)據(jù)時錯誤
{
delete(Http)
delete(Dom)
return(false)
}
else
{
var Back = Dom.documentElement.childNodes.item(0).text
//得到返回的XML數(shù)據(jù),我這里假設(shè)處理程序只返回一行XML數(shù)據(jù)(一個節(jié)點)
delete(Http)
delete(Dom)
return(Back) //函數(shù)返回數(shù)據(jù).......................結(jié)束
}
}
VAR CAT = Send("<用戶資料><姓名>謝檸檬","http://WWW.CHINAASP.COM/VIVA.ASP") //執(zhí)行函數(shù)
IF(CAT == FALSE)
{
ALERT("對不起.處理程序返回的是FALSE.數(shù)據(jù)處理已經(jīng)失敗........")
}
ELSE
{
IF(EVAL(CAT))
{
ALERT("OK.數(shù)據(jù)已經(jīng)發(fā)送成功.兼以處理完成!!!!!!")
}
ELSE
{
ALERT("對不起.處理程序返回的是FALSE.數(shù)據(jù)處理已經(jīng)失敗........")
}
}
===============================VIVA.ASP============================
ON ERROR RESUME NEXT
DIM BOBO
DIM MOMO
SET BOBO = SERVER.CREATEOBJECT("MICROSOFT.XMLDOM")
BOBO.ASYNC = FALSE
BOBO.LOAD REQUEST
IF BOBO.PARSEERROR.ERRORCODE <> 0 THEN
RESPONSE.WRITE("<程序處理結(jié)果><最終結(jié)果>FALSE")
ELSE
SET MOMO = BOBO.DOCUMENTELEMENT
IF MOMO.CHILDNODES.ITEM(0).TEXT = "謝檸檬" THEN
RESPONSE.WRITE("<程序處理結(jié)果><最終結(jié)果>TRUE")
ELSE
RESPONSE.WRITE("<程序處理結(jié)果><最終結(jié)果>FALSE")
END IF
END IF
SET BOBO = NOTHING
分享:xml數(shù)據(jù)存入數(shù)據(jù)庫的解決辦法當(dāng)我們要把xml格式的數(shù)據(jù)存到數(shù)據(jù)庫中。通常的辦法是解析xml文件,讀出xml中的數(shù)據(jù)類型并根據(jù)它創(chuàng)建數(shù)據(jù)庫表和表之間的結(jié)構(gòu),讀出xml中的數(shù)據(jù),存入到數(shù)據(jù)庫之中。 在讀nodeType是要注意二個問題: 1.讀某個節(jié)點數(shù)據(jù)類型可以對上一個節(jié)點的孩子,或直接使本節(jié)
- 相關(guān)鏈接:
- 教程說明:
Xml教程-XMLHTTP對象應(yīng)用開發(fā)的初體驗
。