从数据库中提取数据并自动生成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>