top
Loading...
從數據庫中提取數據并自動生成XML代碼
使用ADO生成XML記錄集(翻譯自David Sussman)
下面這個函數可以把一個數據庫中數據直接轉換成XML可讀的文檔(主要使用在ASP中)
這個函數可以看作是ADO方法中的GetString方法(它主要用來將ADO的記錄集轉換成
HTML格式)的補充.
<%
Function RecordsetToXML (oRec, sName)
Dim oFld
Dim sXML
Dim sSpaces
Dim sNames

sSpaces = Space (iLevel * 2)
If Right(sName, 1) = "s" Then
sNames = sName
sName = Left (sName, Len(sName) - 1)
Else
sNames = sName & "s"
End If
sXML = sSpaces & "<" & sNames & ">" & vbCR
iLevel = iLevel + 1
sSpaces = Space (iLevel * 2)
oRec.MoveFirst
While Not oRec.EOF
sXML = sXML & sSpaces & "<" & sName & ">" & vbCR
For Each oFld In oRec.Fields
If oFld.Type = adChapter Then
Set oChapter = oFld.Value
If Not oChapter.EOF Then
iLevel = iLevel + 1
sXML = sXML & RecordsetToXML (oChapter, oFld.Name)
iLevel = ilevel - 1
End If
Else
sXML = sXML & sSpaces & " " & "<" & oFld.Name & ">" &
oFld.Value & "</" & oFld.Name & ">" & vbCR
End If
Next
sXML = sXML & sSpaces & "</" & sName & ">" & vbCR
oRec.MoveNext
Wend
iLevel = iLevel - 1
sSpaces = Space (iLevel * 2)
sXML = sXML & sSpaces & "</" & sNames & ">" & vbCR

RecordsetToXML = sXML
End Function
%>
上面就是完整的代碼段,可以看出可移植性能很不錯的,你只要在
你的頁面中包含該程序就可以使用這個技術了。
例如:
<!--METADATA TYPE="typelib" FILE="c:program filescommon filessystemadomsado15.dll -->
<!-- #INCLUDE FILE="RecordsetToXML.asp" -->
<%
Set oRec = Server.CreateObject ("ADODB.Recordset")
oRec.Open "authors", "DSN=pubs"
Response.Write RecordsetToXML (oRec, "Authors")
oRec.Close
%>

下面就是自動輸出的XML文件
<Authors>
<Author>
<au_id>172-32-1176</au_id>
<au_lname>Whiter</au_lname>
<au_fname>Bob</au_fname>
<phone>408 496-7223</phone>
<address>10932 Bigge Rd.</address>
<city>Menlo Park</city>
<state>CA</state>
<zip>94025</zip>
<contract>True</contract>
</Author>
<Author>
<au_id>213-46-8915</au_id>
<au_lname>Green</au_lname>
. . .
</Author>
</Authors>
綁定數據
下面的部分是如何將XML中的數據通過RDS的數據綁定技術
就可以直接在IE5中瀏覽這些 XML中的數據了。
第一步是使用XML的數據島來定義數據:
<XML ID="dsoAuthors">
<Authors>
<Author>
<au_id>172-32-1176</au_id>
</Author>
<Author>
<au_id>213-46-8915</au_id>
<au_lname>Green</au_lname>
. . .
</Author>
</Authors>
</XML>

第二步是使用XML和RDS技術顯示數據
<XML ID="dsoAuthors" SRC="authors.xml">
</XML>
<TABLE DATASRC="#dsoAuthors" CELLSPACING=10>
<TR ID="tblSales" vAlign="TOP">
<TD><SPAN DATAFLD="au_fname"></SPAN></TD>
<TD><SPAN DATAFLD="au_lname"></SPAN></TD>
<TD><SPAN DATAFLD="phone"></SPAN></TD>
<TD><SPAN DATAFLD="city"></SPAN></TD>
<TD><SPAN DATAFLD="state"></SPAN></TD>
</TABLE>