【问题标题】:Reading multiple Xml outputs of a stored procedure in ASP.Net applications在 ASP.Net 应用程序中读取存储过程的多个 Xml 输出
【发布时间】:2011-05-18 12:50:00
【问题描述】:

假设以下过程(仅作为示例),我如何在 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 中的两个表读取。

【问题讨论】:

  • 你为什么在这里使用“for xml”?
  • 这只是一个例子。代替上面的语句,我有一些以 XML 形式返回数据的复杂代码。中间层流程 XML。

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


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 2020-06-01
    • 2016-02-25
    • 2010-10-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-06-24
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多