Чтение нескольких выходных данных Xml хранимой процедуры в приложениях ASP.Net - PullRequest
1 голос
/ 18 мая 2011

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

create procedure doSomething
as

select EmpID, EmployeeName from tblEmployees for xml

select DeptID, DepartmentName from tblDepartments for xml

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

1 Ответ

0 голосов
/ 21 ноября 2011

Вы можете использовать обычный DataSet для чтения вывода из SP. Ваш 1-й XML будет представлен как ds.Tables [0], а 2-й - как ds.Tables [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 первого запроса выбора. Чтобы интерпретировать XML против схемы / объектов, вы можете использовать new System.Xml.XmlDocument().LoadXml(strBldrXMLData.ToString())

...