Recuperar datos mediante XmlReader

La clase XmlReader, parte del espacio de nombres System.Xml para la biblioteca de clases de Microsoft .NET Framework, es similar AdomdDataReader a la clase en que la clase XmlReader también proporciona acceso rápido, sin almacenamiento en caché y de solo avance a los datos. Si no es CellSet necesario una vista analítica en memoria de los datos mediante el objeto , el objeto XmlReader es perfecto para recuperar datos XML, especialmente para grandes cantidades de datos. Dado que XmlReader transmite datos, XmlReader no tiene que recuperar y almacenar en caché todos los datos antes de exponerlos al autor de la llamada, CellSet como sucedería si se usara un objeto para convertir la respuesta XML for Analysis en una representación del modelo de objetos analíticos.

La clase XmlReader proporciona acceso directo a la respuesta XML for Analysis recibida por ADOMD.NET cuando ExecuteXmlReader se llama al AdomdCommand método del objeto . Debido a que los datos recuperados son XML sin formato, debe analizar los datos y metadatos de forma manual. En cuanto se han recuperado los datos, se debe cerrar el objeto XmlReader .

Recuperar datos y metadatos

Para usar la clase XmlReader para recuperar datos, siga estos pasos:

  1. Crear una nueva instancia del objeto.

    Para crear una nueva instancia de la clase XmlReader , llame al método Execute o ExecuteXmlReader del AdomdCommand objeto .

  2. Recuperar datos.

    Después de que el comando ejecute la consulta y devuelva xmlReader, debe analizar los datos y los metadatos. Los datos y metadatos XML se presentan en el formato nativo que utiliza el proveedor XML for Analysis. Para la mayoría XML for Analysis proveedores, el formato nativo es el formato MDDataSet . El formato MDDataSet proporciona datos y metadatos para los conjuntos de celdas en un formato bien estructurado. Para obtener más información sobre el formato MDDataSet , vea la especificación XML for Analysis datos.

  3. Cerrar el lector.

    Siempre debe llamar al método Close cuando haya terminado de usar el objeto XmlReader . Mientras xmlReader está abierto, ese Objeto XmlReader tiene un uso exclusivo del AdomdConnection objeto que se usó para ejecutar el comando. No podrá <ejecutar ningún comando mediante "xref:Microsoft.AnalysisServices.AdomdClient.AdomdConnection>, incluida la creación de otro XmlReader o AdomdDataReader, hasta que cierre el XmlReader original.

Ejemplo de recuperación de datos desde XmlReader

En el ejemplo siguiente se ejecuta un comando y se recuperan los datos como XmlReader, lo que genera el contenido del archivo en la consola.

        void OutputDataWithXML()
        {
            //Open a connection to the local server.
            AdomdConnection conn = new AdomdConnection("Data Source=localhost");
            conn.Open();

            //Create a command to retrieve the data.
            AdomdCommand cmd = new AdomdCommand(@"WITH MEMBER [Measures].[FreightCostPerOrder] AS 
[Measures].[Reseller Freight Cost]/[Measures].[Reseller Order Quantity],  
FORMAT_STRING = 'Currency'

SELECT [Geography].[Geography].[Country].&[United States].Children ON ROWS, 
[Date].[Calendar].[Calendar Year] ON COLUMNS
FROM [Adventure Works]
WHERE [Measures].[FreightCostPerOrder]", conn);

            //Execute the command, retrieving an XmlReader.
            System.Xml.XmlReader reader = cmd.ExecuteXmlReader();

            //Do something with the reader: Parse data, Parse metadata,
            //                              Save for later loading into CellSet, etc.
            Console.WriteLine(reader.ReadOuterXml());

            //Close the reader, then the connection
            reader.Close();
            conn.Close();

            //Await user input.
            Console.ReadLine();
        }