Microsoft KB Archive/263247

= How To Obtain an ADO Recordset from XML =

Article ID: 263247

Article Last Modified on 7/1/2004

-

APPLIES TO


 * Microsoft Data Access Components 2.5
 * Microsoft Data Access Components 2.6
 * Microsoft Data Access Components 2.7
 * Microsoft XML Core Services 4.0
 * Microsoft XML Parser 2.5
 * Microsoft XML Parser 2.6
 * Microsoft XML Core Services 4.0

-



This article was previously published under Q263247



SUMMARY
If you have an XML string or document you may use it to open an ActiveX Data Objects (ADO) recordset. You can do this by using the Microsoft ADO 2.5 Stream object and the new XML integration features in ADO.

This article describes the mechanism required to load the following into an ADO 2.5 recordset:
 * A string containing XML.

-and-


 * An XML DOM Document instance.

Provided the XML data is in the format where ADO recordset can accept.



MORE INFORMATION
To open an XML string as a recordset, use the code that follows. Make sure that your Visual Basic project has the appropriate references to the Microsoft ActiveX Data Access Components 2.5 Library so that ADO can be used as shown.

Sample Code Public Function RecordsetFromXMLString(sXML As String) As Recordset

Dim oStream As ADODB.Stream Set oStream = New ADODB.Stream oStream.Open oStream.WriteText sXML  'Give the XML string to the ADO Stream

oStream.Position = 0   'Set the stream position to the start

Dim oRecordset As ADODB.Recordset Set oRecordset = New ADODB.Recordset oRecordset.Open oStream   'Open a recordset from the stream

oStream.Close Set oStream = Nothing

Set RecordsetFromXMLString = oRecordset 'Return the recordset

Set oRecordset = Nothing

End Function Please note that the preceding code accepts a String.

The following code accepts a DOM object as the source for the recordset. Note that the Stream object is not needed:

Public Function RecordsetFromXMLDocument(XMLDOMDocument As DOMDocument) As Recordset Dim oRecordset As ADODB.Recordset Set oRecordset = New ADODB.Recordset oRecordset.Open XMLDOMDocument 'pass the DOM Document instance as the Source argument

Set RecordsetFromXMLDocument = oRecordset 'return the recordset

Set oRecordset = Nothing

End Function After you open the recordset in any of these ways, you can use the recordset as any other disconnected recordset.

Note that the current position, AbsolutePage and other navigation properties are not stored in the XML document; therefore, the newly opened recordset is always positioned at the first row.

