概要
從 Active Server Pages (ASP) Web 頁返回 XML 數據是一種常見的編程要求。 實現此要求所用的方法因用來托管 ASP 應用程序的 Microsoft Internet 信息服務 (IIS) 的版本而異。 本文中的分步指南帶有相關的示例代碼,演示了怎樣從 ASP 頁返回可擴展標記語言 (XML) 數據。
下面的示例代碼創建一個 ASP 頁,此頁返回XML 格式的 ActiveX Data Objects (ADO) 記錄集的內容。 此代碼連接著 SQL Server PUBS 示例數據庫的一個實例,而且它通過執行 SELECT 查詢語句以從 Authors 表中檢索數據的這一方式來打開 ADO 記錄集。 然後,使用 ADO 的保存功能和 ASP Response 對象的 Write 方法,將此記錄集以 XML 的格式返回給客戶端浏覽器。
1. 先決條件
下面簡要列出了推薦使用的硬件、軟件、網絡架構以及所需的 Service Pack:
Microsoft Windows 2000 專業版、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:InetpubWwwroot)下創建一個名為 Xmltest 的文件夾。
右鍵單擊新創建的文件夾,然後單擊屬性。
在安全選項卡上,添加所有人組,並向“所有人”組授予對此文件夾的讀和寫權限。單擊確定接受更改。
在開始菜單上,指向程序,指向管理工具,然後單擊 Internet 服務管理器。
在 Internet 信息服務下,雙擊展開對應於本地服務器的條目。
右鍵單擊“默認 Web 站點”,指向新建,然後單擊虛擬目錄。 在向導中,按照下列步驟操作:
系統提示時,在虛擬目錄別名文本框中鍵入 XMLTest,然後單擊下一步。
當提示您鍵入 Web 站點內容目錄時,單擊浏覽,選擇新創建的 XMLTest 目錄,然後單擊下一步。
在提示您選擇訪問權限時,選擇讀和運行腳本(例如 ASP)。 本例中不需要其他任何訪問權限。單擊下一步以完成向導。
雙擊“默認 Web 站點”。
右鍵單擊新的虛擬目錄,然後單擊屬性。
在目錄選項卡上,檢查在應用程序設置下面的應用程序名文本框中是否列出了 Web 站點名稱(在步驟 6a 中鍵入的名稱)。如果未列出,請單擊創建以創建該應用程序。
關閉屬性對話框和 IIS。
3. Windows 2000 XML 示例代碼
在開始菜單上,指向程序,指向附件,然後單擊記事本。
選定以下代碼,右鍵單擊所選內容,然後單擊復制。在記事本中,單擊編輯菜單上的粘貼,將以下代碼添加到該文件中:
<%
'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=;" & _
"Password=;" & _
"Initial Catalog=pubs;" & _
"Data Source="
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 行代碼中,將 替換為您的用戶名。
在第 21 行代碼中,將 替換為您的密碼。
在第 23 行代碼中,將 替換為您的 SQL Server。
在文件菜單上,單擊保存。
在保存在下拉列表框中,浏覽到您在前面創建的 Xmltest 文件夾。 在文件名文本框中,鍵入 Xmlw2k.asp,並在保存類型下拉框中單擊所有文件。最後單擊保存以保存該文件。
若要查看該頁,請啟動 Web 浏覽器,然後在地址欄中鍵入該頁的 HTTP 位置。 如果您將文件保存到了前面提到的位置,則請在地址欄中鍵入 http://< 服務器名 >/Xmltest/Xmlw2k.asp 。
4. Windows NT 4.0 XML 示例代碼
在開始菜單上,指向程序,指向附件,然後單擊記事本。
選定以下代碼,右鍵單擊所選內容,然後單擊復制。在記事本中,單擊編輯菜單上的粘貼,將以下代碼添加到該文件中:
<%
'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=;" & _
"Password=
"Initial Catalog=pubs;" & _
"Data Source="
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 行代碼中,將 替換為您的用戶名。
在第 21 行代碼中,將 替換為您的密碼。
在第 23 行代碼中,將 替換為您的 SQL Server。
在文件菜單上,單擊保存。
在保存在下拉列表框中,浏覽到您在前面創建的 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 對象實現了 IStream 接口。 所以可以將一個 ADO 記錄集(XML 格式),或一個加載了 XML 數據的 MSXML DOMDocument 對象直接保持到 Response 對象。
在 IIS 4.0 (ASP 2.0) 中,ASP Response 對象未實現 IStream COM 接口。 所以必須使用 Response 對象的 Write 方法從 ASP 中返回 XML。 傳遞給 Write 方法的參數必須是一個完整格式的 XML 字符串,或是包含一個完整格式 XML 字符串的變量。