明輝手游網(wǎng)中心:是一個免費提供流行視頻軟件教程、在線學習分享的學習平臺!

從 ASP Web 頁返回 XML

[摘要]概要從 Active Server Pages (ASP) Web 頁返回 XML 數(shù)據(jù)是一種常見的編程要求。 實現(xiàn)此要求所用的方法因用來托管 ASP 應用程序的 Microsoft Interne...
概要
從 Active Server Pages (ASP) Web 頁返回 XML 數(shù)據(jù)是一種常見的編程要求。 實現(xiàn)此要求所用的方法因用來托管 ASP 應用程序的 Microsoft Internet 信息服務 (IIS) 的版本而異。 本文中的分步指南帶有相關的示例代碼,演示了怎樣從 ASP 頁返回可擴展標記語言 (XML) 數(shù)據(jù)。 

下面的示例代碼創(chuàng)建一個 ASP 頁,此頁返回XML 格式的 ActiveX Data Objects (ADO) 記錄集的內(nèi)容。 此代碼連接著 SQL Server PUBS 示例數(shù)據(jù)庫的一個實例,而且它通過執(zhí)行 SELECT 查詢語句以從 Authors 表中檢索數(shù)據(jù)的這一方式來打開 ADO 記錄集。 然后,使用 ADO 的保存功能和 ASP Response 對象的 Write 方法,將此記錄集以 XML 的格式返回給客戶端瀏覽器。
1. 先決條件
下面簡要列出了推薦使用的硬件、軟件、網(wǎng)絡架構以及所需的 Service Pack: 
Microsoft Windows 2000 專業(yè)版、Windows 2000 Server 或 Windows 2000 Advanced Server 
Microsoft Internet Information Server (IIS) 5.0 



Microsoft Windows NT 4.0 Server 
Microsoft Internet Information Server (IIS) 4.0 
2. 準備 Web 站點
在 Windows 資源管理器中,在 Web 服務器的根文件夾(通常在 C:\Inetpub\Wwwroot\)下創(chuàng)建一個名為 Xmltest 的文件夾。 
右鍵單擊新創(chuàng)建的文件夾,然后單擊屬性。 
在安全選項卡上,添加所有人組,并向“所有人”組授予對此文件夾的讀和寫權限。單擊確定接受更改。
在開始菜單上,指向程序,指向管理工具,然后單擊 Internet 服務管理器。 
在 Internet 信息服務下,雙擊展開對應于本地服務器的條目。 
右鍵單擊“默認 Web 站點”,指向新建,然后單擊虛擬目錄。 在向?qū)е,按照下列步驟操作: 
系統(tǒng)提示時,在虛擬目錄別名文本框中鍵入 XMLTest,然后單擊下一步。 
當提示您鍵入 Web 站點內(nèi)容目錄時,單擊瀏覽,選擇新創(chuàng)建的 XMLTest 目錄,然后單擊下一步。 
在提示您選擇訪問權限時,選擇讀和運行腳本(例如 ASP)。 本例中不需要其他任何訪問權限。單擊下一步以完成向?qū)А?nbsp;
雙擊“默認 Web 站點”。
右鍵單擊新的虛擬目錄,然后單擊屬性。
在目錄選項卡上,檢查在應用程序設置下面的應用程序名文本框中是否列出了 Web 站點名稱(在步驟 6a 中鍵入的名稱)。如果未列出,請單擊創(chuàng)建以創(chuàng)建該應用程序。 
關閉屬性對話框和 IIS。 
3. Windows 2000 XML 示例代碼
在開始菜單上,指向程序,指向附件,然后單擊記事本。
選定以下代碼,右鍵單擊所選內(nèi)容,然后單擊復制。在記事本中,單擊編輯菜單上的粘貼,將以下代碼添加到該文件中: 
<% 

'Very Important : Set the ContentType property of the Response object to text/xml.

Response.ContentType = "text/xml"

Dim cn 
Dim rs 
Dim xmlDoc 

Set cn=Server.CreateObject("ADODB.Connection")
Set rs=Server.CreateObject("ADODB.Recordset") 

'Replace the ADO Connection string attributes
'in the following line of code to point to your
'instance of SQL Server, and to specify the 
'required security credentials for User ID and Password.

cn.Open "Provider=SQLOLEDB.1;" & _
        "User ID=<userid>;" & _
        "Password=<password>;" & _
"Initial Catalog=pubs;" & _
        "Data Source=<servername>"

rs.CursorLocation = 3
rs.Open "Select * from Authors",cn

'Persist the Recorset in XML format to the ASP Response object. 
'The constant value for adPersistXML is 1.

rs.Save Response, 1

%>
在第 20 行代碼中,將 <userid> 替換為您的用戶名。
在第 21 行代碼中,將 <password> 替換為您的密碼。
在第 23 行代碼中,將 <servername> 替換為您的 SQL Server。
在文件菜單上,單擊保存。
在保存在下拉列表框中,瀏覽到您在前面創(chuàng)建的 Xmltest 文件夾。 在文件名文本框中,鍵入 Xmlw2k.asp,并在保存類型下拉框中單擊所有文件。最后單擊保存以保存該文件。
若要查看該頁,請啟動 Web 瀏覽器,然后在地址欄中鍵入該頁的 HTTP 位置。 如果您將文件保存到了前面提到的位置,則請在地址欄中鍵入 http://< 服務器名 >/Xmltest/Xmlw2k.asp 。 
4. Windows NT 4.0 XML 示例代碼
在開始菜單上,指向程序,指向附件,然后單擊記事本。
選定以下代碼,右鍵單擊所選內(nèi)容,然后單擊復制。在記事本中,單擊編輯菜單上的粘貼,將以下代碼添加到該文件中: 
<% 
'Very Important : Set the ContentType property of
'the Response object to text/xml.

Response.ContentType = "text/xml"

Dim cn 
Dim rs 
Dim xmlDoc 

Set cn=Server.CreateObject("ADODB.Connection")
Set rs=Server.CreateObject("ADODB.Recordset")

'Replace the ADO Connection string attributes
'in the following line of code to point to your
'instance of SQL Server, and to specify the 
'required security credentials for User ID and Password.

cn.Open "Provider=SQLOLEDB.1;" & _
        "User ID=<userid>;" & _
        "Password=<password;" & _
"Initial Catalog=pubs;" & _
        "Data Source=<servername>"

rs.CursorLocation = 3
rs.Open "Select * from Authors",cn

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

'Persist the Recorset in XML format to the DOMDocument object.
'The constant value for adPersistXML is 1.

rs.Save xmlDoc,1

rs.Close
cn.Close

Set rs = Nothing
Set cn = Nothing 

'Write out the xml property of the DOMDocument
'object to the client Browser
Response.Write xmldoc.xml
%>
在第 20 行代碼中,將 <userid> 替換為您的用戶名。
在第 21 行代碼中,將 <password> 替換為您的密碼。
在第 23 行代碼中,將 <servername> 替換為您的 SQL Server。
在文件菜單上,單擊保存。
在保存在下拉列表框中,瀏覽到您在前面創(chuàng)建的 Xmltest 文件夾。 在文件名文本框中,鍵入 Xmlnt4.asp,并在保存類型下拉框中單擊所有文件。最后單擊保存以保存該文件。
若要查看該頁,請啟動 Web 瀏覽器,然后在地址欄中鍵入該頁的 HTTP 位置。 如果您將文件保存到了前面提到的位置,則請在地址欄中鍵入 http://< 服務器名 >/Xmltest/Xmlnt4.asp。備注: 當在 Windows 2000 中使用 IIS 5.0 時,此 Windows NT 4.0 示例代碼也可以運行。
5. 缺陷
當您訪問 ASP 頁時,瀏覽器返回空白頁。 請檢查您是否在 ASP 頁的頂部包括了下面這一行: 
Response.ContentType = "text/xml"
這應是 ASP 頁中的第一行代碼 
在 IIS 5.0 (ASP 3.0) 中,ASP Response 對象實現(xiàn)了 IStream 接口。 所以可以將一個 ADO 記錄集(XML 格式),或一個加載了 XML 數(shù)據(jù)的 MSXML DOMDocument 對象直接保持到 Response 對象。 
在 IIS 4.0 (ASP 2.0) 中,ASP Response 對象未實現(xiàn) IStream COM 接口。 所以必須使用 Response 對象的 Write 方法從 ASP 中返回 XML。 傳遞給 Write 方法的參數(shù)必須是一個完整格式的 XML 字符串,或是包含一個完整格式 XML 字符串的變量。