WEB开发网
开发学院数据库MSSQL Server 从 SQL Server 2005 中处理 XML 阅读

从 SQL Server 2005 中处理 XML

 2007-05-13 09:26:22 来源:WEB开发网   
核心提示: <jobs job_id="1" min_lvl="10" max_lvl="10" /><jobs job_id="2" min_lvl="200" max_lvl=&q
<jobs job_id="1" min_lvl="10" max_lvl="10" />
<jobs job_id="2" min_lvl="200" max_lvl="250" />
<jobs job_id="3" min_lvl="175" max_lvl="225" />
<jobs job_id="4" min_lvl="175" max_lvl="250" />
<!-- some jobs rows deleted for compactness -->

使用 SqlXml 既支持文档,也支持片段。SqlXmlCreateReader() 方法总是创建一个 XmlReader,它通过使用新的 XmlReaderSettings 类来支持片段,如下所示:

// pseudocode from SqlXml.CreateReader
  Stream stm = stm; // stream filled from column (code elided)
  XmlReaderSettings settings = new XmlReaderSettings();
  settings.ConformanceLevel = ConformanceLevel.Fragment;
  XmlReader xr = XmlReader.Create(
    stm, String.Empty, null, null,settings);

如果您以同样的方式构造 XmlReader,则可以在输入参数中使用 XML 片段。尽管使用 SqlXml 类型时内置了片段支持,但是您在处理包含片段的 XmlReader 时仍需要小心。请注意,调用 XmlReader.GetOuterXml() 将只提供第一个片段;要定位 XmlReader 以获取随后的片段,您必须再次调用 XmlReaderRead 方法。我将在本文的稍后部分说明此问题。

T-SQL 的“SELECT ... FOR XML”生成了 XML 流,而不是一列一行的行集。它还以二进制格式而非 XML 的标准序列化提供了 XML。由于格式的不同,以及“SELECT ... FOR XML”总是生成片段,因此使用它需要特殊的方法。出于此目的,SqlClient 实现了一种提供程序特定的方法 SqlCommand.ExecuteXmlReader。如果使用 SQL Server 2000 和 ADO 1.0/1.1,则需要使用 ExecuteXmlReader 以获取 FOR XML 查询的结果,除非您想使用某些需要字符串连接的相当不好的替代方案。通过 SQL Server 2005 FOR XML 增强功能以及对 XML 作为数据类型的支持,您只需使用 ExecuteXmlReader 就能从 SQL Server 获取单个 XML 流。由于所有为 SQL Server 2000 编写的代码都使用此方法,因此该方法在 ADO.NET 2.0 中也受支持,而且得到了增强。

上一页  1 2 3 4 5 6 7 8 9 10  下一页

Tags:SQL Server 处理

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接