Cette nouvelle version produit directement l'objet DOMDocument. De plus, le traitement est bien plus rapide avec le composant.
Imports System
Imports System.Data
Imports System.Data.OleDb
Imports System.Xml
Imports Microsoft.VisualBasic.Strings
Namespace Intranet
» Public Class Tools
» » Public Function ADO2XML(MDB,SQL) As XmlDocument
» » » Dim ODCom As OleDbCommand = New OleDbCommand
» » » Dim ODCon As OleDbConnection
» » » Dim ODDR As OleDbDataReader
» » » ODCon = New OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & HttpContext.Current.Server.MapPath(MDB))
» » » ODCon.Open ()
» » » ODCom.Connection = ODCon
» » » ODCom.CommandText = SQL
» » » ODDR = ODCom.ExecuteReader()
» » » Dim XD As XmlDocument = New XmlDocument
» » » XD.LoadXml("<?xml version=""1.0""?><Records/>")
» » » Dim DE As XmlNode = XD.DocumentElement
» » » Dim XE1,XE2 As XmlElement
» » » Dim I As Integer
» » » While ODDR.Read ()
» » » » XE1 = XD.CreateElement("Record")
» » » » For I = 0 To ODDR.FieldCount-1
» » » » » XE2 = XD.CreateElement(PROPER(ODDR.GetName(I)))
» » » » » XE2.InnerText = Trim(ODDR.Item(I))
» » » » » XE1.AppendChild(XE2)
» » » » Next
» » » » DE.AppendChild(XE1)
» » » End While
» » » ODDR.Close
» » » ODCon.Close
» » » ADO2XML = XD
» » End Function
» » Private Function PROPER(TXT) As String
» » » PROPER = UCase(Left(TXT,1))+LCase(Mid(TXT,2))
» » End Function
» End Class
End Namespace
/out:BIN\ADO2XML.DLL /t:LIBRARY /r:SYSTEM.DLL,SYSTEM.DATA.DLL,SYSTEM.XML.DLL /nologo
VBC ADO2XML.VB @ADO2XML.MAK
<%@ Page Language="VB" %>
<%@ Import Namespace="Homepage" %>
<%
» A2X("select" & _
» » " S1.SUBJECT as SUBJECT1," & _
» » " count(*) as I " & _
» » "from" & _
» » " BOOKMARK B," & _
» » " SUBJECT1 S1 " & _
» » "where" & _
» » " PUB=2 and" & _
» » " B.S1=S1.S1 and" & _
» » " S1.SUBJECTgt;'' " & _
» » "group by" & _
» » " S1.SUBJECT " & _
» » "order by" & _
» » " S1.SUBJECT")
» Session.Abandon
%>
<script runat="server">
» Sub A2X(SQL)
» » Dim HT As New Homepage.Tools
» » Response.Write(HT.ADO2XML("MyDatabase",SQL).InnerXml)
» End Sub
</script>
<?xml version="1.0" ?> <Records> » <Record> » » <Subject1>Annuaires</Subject1> » » <I>40</I> » </Record> » <Record> » » <Subject1>Certification</Subject1> » » <I>67</I> » </Record> » ... » <Record> » » <Subject1>Windows nt</Subject1> » » <I>55</I> » </Record> » <Record> » » <Subject1>Windows xp</Subject1> » » <I>160</I> » </Record> </Records>