本文包含了逐步說明指示,可以設定 ASP 用戶端,會示範如何使用 OLEDB 簡易提供者來存取階層式 XML 資料的 XML。
OLE DB 簡易提供者 (XML OSP) 的 XML 可以用於 XML 文件中的資料載入到唯讀的 ADO 記錄集。資料是再讀取,並使用 ADO 資料錄集物件的標準方法來存取。這個提供者來提供使用包含在 XML 文件中的階層式資料的不同方法。
在要設定及測試 ASP 網頁,用來存取儲存在 XML 文件中的階層式資料的 XML OSP 序列中執行下列步驟執行:
- 在 Microsoft [記事本] 中開啟新的檔案。複製和貼上下列程式碼貼入其中,然後將該檔案 IIS 虛擬目錄具有權限來執行指令碼中儲存成 TestOSP.asp:
<%@ Language=VBScript %>
<!--#include file="adovbs.inc" -->
<%
Dim adoRS 'ADODB.Recordset
Set adoRS = CreateObject("ADODB.Recordset")
' Set up the Connection
adoRS.ActiveConnection = "Provider=MSDAOSP; Data Source=MSXML2.DSOControl.2.6;"
' Open the XML source
adoRS.Open Server.MapPath(".") & "\portfolio.xml"
printtbl adoRS, 0
If adoRS.State = adStateOpen Then
adoRS.Close
End If
Set adoRS = Nothing
Response.End
' Function to recurcusively retrieve the data
Sub printtbl(rs, indent)
Dim rsChild 'ADODB.Recordset
Dim Col 'ADODB.Field
set rsChild = Server.CreateObject("ADODB.Recordset")
While rs.EOF <> True
For Each Col In rs.Fields
If Col.Name <> "$Text" Then ' $Text to be ignored
If Col.Type <> adChapter Then
' Output the non-chaptered column
Response.Write( String((indent)," " ) & Col.Name & ": " & Col.Value )
Else
Response.Write("<br/>")
' Retrieve the Child recordset
Set rsChild = Col.Value
rsChild.MoveFirst
If Err Then
Response.write("Error: " & Error )
Response.end
end if
printtbl rsChild, indent + 4
rsChild.Close
Set rsChild = Nothing
End If
End If
Next
Response.Write( "<br/>")
rs.MoveNext
Wend
End Sub
%>
- 前述的 ASP 檔案中程式碼會使用 OLEDB 簡易提供者的 XML,從名為 portfolio.xml 至 ADO 資料錄集物件的 XML 檔案載入資料。在 [記事本] 中, 開啟新檔案並複製並在其中貼上下列 XML。將檔案儲存為您用來儲存 TestOSP.asp IIS 虛擬目錄中 portfolio.xml:
<portfolio>
<stock>
<symbol>CTS</symbol>
<price>$66.00</price>
<info>
<companyname>Contoso Pharmaceuticals</companyname>
<website>http://www.contoso.com</website>
</info>
</stock>
<stock>
<symbol>FAB</symbol>
<price>$110.00</price>
<info>
<companyname>Fabrikam, Inc</companyname>
<website>http://www.fabricam.com</website>
</info>
</stock>
<stock>
<symbol>PRO</symbol>
<price>$50.00</price>
<info>
<companyname>Proseware, Inc</companyname>
<website>http://www.proseware.com</website>
</info>
</stock>
<stock>
<symbol>WWI</symbol>
<price>$136.00</price>
<info>
<companyname>Wide World Importers</companyname>
<website>http://www.worldwideimporters.com</website>
</info>
</stock>
</portfolio>
- 瀏覽至 TestOSP.asp 與 Internet Explorer,並請注意會顯示在 portfolio.xml 資料視需要而定。在 ASP 程式碼會使用 XML OSP 來載入一個 ADO 資料錄集的 XML 資料,然後在資料錄集中記錄執行迴圈,並寫出欄位中值 ASP 回應物件。
這篇文章中的資訊適用於:
- Microsoft ActiveX Data Objects 2.6
- Microsoft ActiveX Data Objects 2.7
- Microsoft Data Access Components 2.6
- Microsoft Data Access Components 2.7
- Microsoft Active Server Pages 4.0
- Microsoft XML Parser 2.6
- Microsoft XML Parser 3.0
- Microsoft XML Core Services 4.0
| kbmt kbhowto KB272270 KbMtzh |
機器翻譯重要:本文是以 Microsoft 機器翻譯軟體翻譯而成,而非使用人工翻譯而成。Microsoft 同時提供使用者人工翻譯及機器翻譯兩個版本的文章,讓使用者可以依其使用語言使用知識庫中的所有文章。但是,機器翻譯的文章可能不盡完美。這些文章中也可能出現拼字、語意或文法上的錯誤,就像外國人在使用本國語言時可能發生的錯誤。Microsoft 不為內容的翻譯錯誤或客戶對該內容的使用所產生的任何錯誤或損害負責。Microsoft也同時將不斷地就機器翻譯軟體進行更新。
按一下這裡查看此文章的英文版本:
272270?
(http://support.microsoft.com/kb/272270/en-us/
)
Microsoft及(或)其供應商不就任何在本伺服器上發表的文字資料及其相關圖表資訊的恰當性作任何承諾。所有文字資料及其相關圖表均以「現狀」供應,不負任何擔保責任。Microsoft及(或)其供應商謹此聲明,不負任何對與此資訊有關之擔保責任,包括關於適售性、適用於某一特定用途、權利或不侵權的明示或默示擔保責任。Microsoft及(或)其供應商無論如何不對因或與使用本伺服器上資訊或與資訊的實行有關而引起的契約、過失或其他侵權行為之訴訟中的特別的、間接的、衍生性的損害或任何因使用而喪失所導致的之損害、資料或利潤負任何責任。