在ASP.Net应用程序中读取存储过程的多个Xml输出

时间:2011-05-18 12:50:01

标签: asp.net sql-server ado.net xmlreader

假设以下过程(仅用于示例),如何在ASP.Net应用程序中使用XmlReader或DataReader读取两个XML输出?

create procedure doSomething
as

select EmpID, EmployeeName from tblEmployees for xml

select DeptID, DepartmentName from tblDepartments for xml

性能是关键,因此我不想使用DataSet将XML加载到内存中,然后将两个XML输出作为DataSet中的两个表读取。

1 个答案:

答案 0 :(得分:0)

您可以使用普通DataSet读取SP的输出。 你的第一个xml将以ds.Tables [0]和第二个为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())