Compartir a través de


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 a la clase AdomdDataReader en que la clase XmlReader también proporciona acceso rápido, sin caché y de sólo avance a los datos. Si no es necesaria una vista en memoria y analítica de los datos mediante el objeto CellSet, el objeto XmlReader es perfecto para recuperar datos XML, especialmente grandes cantidades de datos. Dado que XmlReader transmite datos por secuencias, XmlReader no tiene que recuperar y almacenar en caché todos los datos antes de exponerlos al autor de las llamada, que sería el caso si se utilizara un objeto CellSet para convertir la respuesta de XML for Analysis en una representación de modelo de objetos analítico.

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

Recuperar datos y metadatos

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

  1. Cree una nueva instancia del objeto.

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

  2. Recupere los datos.

    Una vez que el comando ejecuta la consulta y devuelve XmlReader, debe analizar los datos y metadatos. Los datos y metadatos XML se presentan en el formato nativo que utiliza el proveedor XML for Analysis. Para la mayoría de los proveedores XML for Analysis, el formato nativo es el formato MDDataSet. El formato MDDataSet proporciona datos y metadatos para conjuntos de celdas en un formato estructurado. Para obtener más información acerca del formato MDDataSet, vea la especificación de XML for Analysis.

  3. Cierre el lector.

    Siempre debe llamar al método Close cuando haya terminado de utilizar el objeto XmlReader. Mientras XmlReader está abierto, XmlReader tiene uso exclusivo del objeto AdomdConnection que se utilizó para ejecutar el comando. No podrá ejecutar cualquier comando mediante AdomdConnection, incluido crear otro XmlReader o AdomdDataReader, hasta que cierre el XmlReaderoriginal.

Ejemplo de recuperación de datos desde XmlReader

En el ejemplo siguiente se ejecuta un comando y se recuperan los datos como XmlReader, generando el contenido del archivo a 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();
        }