从 XML 数据创建报表数据集

Reporting Services 提供了一个支持从 XML 数据源检索报表数据的数据处理扩展插件。报表可以使用 XML 文档和 Web 服务中的数据,也可以在查询中嵌入 XML。不提供从 SQL Server 数据库检索 XML 文档的内置支持。

连接到 XML 数据源并从其中检索数据

若要在报表中检索 XML 数据,请创建一个包含连接字符串的数据源,该连接字符串指定指向 Web 服务或 XML 文档的 URL。还可以创建包含空连接字符串的数据源,并在数据集查询中嵌入 XML 数据。

每个 XML 数据源都必须具有下列特征:

  • 数据源类型必须为 XML。Reporting Services 提供了 XML 数据处理扩展插件以检索和处理报表中的数据。

  • 凭据必须配置为使用 Windows 集成安全性,或不使用任何凭据。

    不支持存储的凭据和提示的凭据。注意,如果禁用 Windows 集成安全性,则无法使用它来检索数据。如果指定了存储凭据或提示凭据,则会在执行时发生错误。

    如果选择不使用任何凭据,则将使用匿名访问。请确保您已为报表服务器定义了无人参与的执行帐户以连接到外部数据源。XML 数据处理扩展插件不会将凭据传递到目标 URL 或 Web 服务;只有在定义了无人参与的执行帐户之后,连接才会成功。有关详细信息,请参阅配置无人参与的执行帐户

  • 连接字符串必须为指向 Web 服务、基于 Web 的应用程序或可通过 HTTP 使用的 XML 文档的 URL。XML 文档必须具有 XML 扩展名。还可以对数据集查询中嵌入的 XML 数据使用空连接字符串。

  • 查询必须返回 XML 数据。对于 XML 文档,可以使用与 XQuery 类似的 XML 语法提供元素路径,如用于指定 XML 报表数据的元素路径语法所述。对于 Web 服务,可以提供用于指定调用方法或 SOAP 操作的 <Query> 元素。如果 XML 数据源具有可产生要用于报表的数据的层次结构,则可以将查询留空并使用默认查询。查询运行时检索的 XML 元素节点值和属性将映射到在报表中使用的数据集字段。

  • 必须使用基于文本的查询设计器创建查询。系统不会对查询进行分析以标识参数,因此必须通过“数据集属性”对话框中的**“参数”**页来创建参数。有关查询语法的详细信息,请参阅用于指定 XML 报表数据的 XML 查询语法。有关通用查询设计器的详细信息,请参阅 Reporting Services 中的查询设计工具

XML 数据源的连接字符串

下面的示例对 Web 服务器和 XML 文档的连接字符串语法分别进行了说明。不支持 file:// 协议。

XML 文档类型

连接字符串示例

Web 服务

http://adventure-works.com/results.aspx

XML 文档

https://localhost/XML/Customers.xml

嵌入的 XML 文档

有关定义数据源的详细信息,请参阅如何创建嵌入数据源或共享数据源

包含 XML 数据源的数据集查询

数据集包括查询,该查询是针对数据源运行以检索特定结果集的命令文本。该结果集将映射到数据集中的字段集合。还可以对数据集设置筛选值,以限制从数据源返回的结果。下表中显示当数据源为 XML 类型时数据集查询的可能值。

数据集查询

说明

使用空查询创建默认结果集。默认查询是通过读取数据源并遍历到 XML 节点层次结构的第一个叶集合来创建的。结果集包括具有文本值的所有节点以及沿该路径的所有节点属性。结果集中的列将映射到数据集的字段。

元素路径

指定在从数据源中检索 XML 数据时要使用的节点序列。

XML 查询元素

具有以下可选元素的 XML 查询规范。

XML 数据源必需的 XML 元素可选的 XML 元素
对于 Web 服务 <Method Namespace= "命名空间" Name="MethodName" /> -- or -- <SoapAction> soap 操作 </SoapAction> <ElementPath> 元素路径 </ElementPath> <Method Namespace= "命名空间" Name="MethodName" /> -- or -- <SoapAction> soap 操作 </SoapAction>
对于 XML 文档 <ElementPath> 元素路径 </ElementPath>
对于嵌入的 XML 文档 <XmlData> 内部 XML </XmlData> <ElementPath> 元素路径 </ElementPath> -- or -- <ElementPath IgnoreNamespaces="true"> 元素路径 </ElementPath>

可以使用 XML 查询元素指定命名空间,或在 XML ElementPath 中指定 IgnoreNamespaces 属性以忽略命名空间。有关 XML 查询元素的详细信息,请参阅用于指定 XML 报表数据的 XML 查询语法。有关元素路径语法的详细信息,请参阅用于指定 XML 报表数据的元素路径语法

检索 XML Web 服务数据的要求

XML 数据处理扩展插件不能检测架构。因此,您必须通过某种方式来发现哪些 SOAP 方法将检索所需数据。您还必须了解 Web 服务用于其数据的寻址方案或命名空间。

检索 XML 文档数据的要求

使用 http 协议时,服务器必须返回 XML 数据,或者 XML 数据必须嵌入 XML Query 元素中。如果您使用 http 协议直接引用 XML 文档,则文档的扩展名必须为 .xml。您必须了解如何创建 XML 查询来检索所需的所有数据。如果不指定元素路径,则默认的 XML 文档分析行为是选择 XML 文档中指向叶节点集合的第一个可用路径。如果 XML 文档包括指向其他同级叶节点集合的其他路径,则除非在查询中指定一个路径,否则将忽略这些节点。有关详细信息,请参阅用于指定 XML 报表数据的元素路径语法