Получение данных с помощью объекта XmlReader

класс xmlreader , часть пространства имен System.Xml для библиотеки классов Microsoft платформа .NET Framework, похож на AdomdDataReader класс в том, что класс XmlReader также предоставляет быстрый, некэшированный однопроходный доступ к данным. Если нет необходимости в аналитическом представлении данных в памяти с помощью CellSet объекта, то объект XmlReader идеально подходит для извлечения XML-данных, особенно для больших объемов данных. Поскольку XmlReader Streams Data, XmlReader не требует извлечения и кэширования всех данных перед предоставлением данных вызывающему объекту, как в случае, если CellSet объект был использован для преобразования XML для аналитики ответа в представление аналитической модели объектов.

Класс XmlReader предоставляет прямой доступ к XML для аналитики ответу, полученному с помощью ADOMD.NET при ExecuteXmlReader вызове метода AdomdCommand объекта. Синтаксический анализ полученных данных необходимо выполнить вручную, поскольку они представляют собой необработанный XML. После получения данных объект XmlReader должен быть закрыт.

Получение данных и метаданных

Чтобы использовать класс XmlReader для получения данных, выполните следующие действия.

  1. Создайте новый экземпляр объекта.

    Чтобы создать новый экземпляр класса XmlReader , вызовите Execute метод AdomdCommand или ExecuteXmlReader объекта.

  2. Получение данных.

    После того, как команда запустит запрос и вернет XmlReader, необходимо проанализировать данные и метаданные. Данные и метаданные XML представлены в собственном формате, используемом поставщиком XML для аналитики. Для большинства поставщиков XML для аналитики собственный формат имеет формат MDDataSet . Формат MDDataSet предоставляет как данные, так и метаданные для наборы ячеек в правильном структурированном формате. Дополнительные сведения о формате MDDataSet см. в спецификации XML для аналитики.

  3. Закройте модуль чтения.

    При завершении использования объекта XmlReader следует всегда вызывать Close метод. Пока открыт XmlReader , этот XmlReader имеет эксклюзивное использование AdomdConnection объекта, который использовался для выполнения команды. Вы не сможете выполнять команды с помощью < XREF: Microsoft. AnalysisServices. AdomdClient. AdomdConnection > , включая создание другого XmlReader или AdomdDataReader , до закрытия исходного XmlReader.

Пример получения данных из объекта XmlReader

В следующем примере выполняется команда и данные извлекаются в виде XmlReader, что позволяет выводить содержимое файла на консоль.

        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();
        }