#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())