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

问题描述:

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

create procedure doSomething 
as 

select EmpID, EmployeeName from tblEmployees for xml 

select DeptID, DepartmentName from tblDepartments for xml 

性能是关键的,因此我不希望通过使用DataSet加载个XML到存储器中,然后读出的两个XML输出作为在DataSet两个表。

+0

为什么在这里使用“for xml”? – Pankaj 2011-05-18 13:13:55

+0

这只是一个例子。代替上面的陈述,我有一些复杂的代码将数据作为XML返回。中间层流程XML。 – Pradeep 2011-05-20 12:35:46

您可以使用正常的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())