Чтение нескольких Xml-выходных данных хранимой процедуры в ASP.Сетевые приложения

#asp.net #sql-server #ado.net #xmlreader

#asp.net #sql-сервер #ado.net #xmlreader

Вопрос:

Предполагая следующую процедуру (просто для примера), как мне прочитать два XML-выходных данных, используя XmlReader или DataReader в ASP.Сетевое приложение?

 create procedure doSomething
as

select EmpID, EmployeeName from tblEmployees for xml

select DeptID, DepartmentName from tblDepartments for xml
  

Производительность является ключевой, поэтому я не хочу загружать XML-файлы в память с помощью DataSet, а затем считывать два XML-вывода в виде двух таблиц в DataSet.

Комментарии:

1. Почему вы используете здесь «для xml»?

2. Это всего лишь пример. Вместо приведенных выше инструкций у меня есть некоторый сложный код, который возвращает данные в формате XML. XML процесса среднего уровня.

Ответ №1:

Вы можете использовать обычный набор данных для чтения выходных данных из SP. Ваш первый XML-файл будет представлен как ds.Таблицы [0] и 2-я как ds.Таблицы[1] и так далее.

Однако полный XML-файл будет разделен на несколько строк по всей таблице. таким образом, вам придется перебирать доступные строки в таблице и добавлять данные в конструктор строк, чтобы получить полные XML-данные.

Например:

 StringBuilder strBldrXMLData= new StringBuilder();     
for (int i = 0; i < objDS.Tables[0].Rows.Count; i  )
            strBldrXMLData.Append(Utility.ConvertToString(objPermDS.Tables[1].Rows[i][0]));
  

Теперь ваш strBldrXMLData.ToString() будет иметь полный XML-вывод 1-го запроса select. Для интерпретации XML в соответствии со схемой / объектами вы можете использовать new System.Xml.XmlDocument().LoadXml(strBldrXMLData.ToString())