从数据库中提取数据并自动生成XML代码
---(文/Batman)
使用ADO生成XML记录集下面这个函数可以把一个数据库中数据直接转换成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 files\common files\system\ado\msado15.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>