xml - 无法使用默认命名空间查询 SSRS XML 输入

标签 xml reporting-services namespaces reportbuilder

我在 SSRS (SQL Server 2008 R2) 中的报表方面遇到问题。无论输入是从报表生成器 (v3) 内部还是通过 SSRS 的 Web 服务接口(interface)提供,都会出现问题。

假设这是输入 XML(在名为“ProvidedData”的参数中):

<person>
<name>joe</name>
</person>

...我使用查询创建一个数据集:

<Query><XmlData>" & Parameters!ProvidedData.Value & "</XmlData>
<ElementPath>person</ElementPath></Query>

然后,我使用字段源“name”创建一个名为“Name”的字段。没问题 - 这可以在报告中使用,没有任何问题。

如果我更改输入 XML 以为其提供一些命名空间信息,它也无需任何更改即可工作。现在 XML 是:

<person xmlns:p="http://somenamespace">
<name>joe</name>
</person>

这也同样有效,其他地方没有任何变化。作为报表生成器中的默认值或通过 Web 服务接口(interface)从 C# 传入时使用。

问题是我正在向我提供带有默认命名空间的 XML,并且当我使用该 XML 时,字段查询无法解析。没有错误,只是找不到值。

因此,如果 XML 如下所示,则不起作用:

<person xmlns="http://somenamespace">
<name>joe</name>
</person>

有什么想法吗?我实际上对传入的 XML 没有任何控制权,所以我只能使用默认的命名空间。

最佳答案

在前两个实例中,person 元素实际上是默认命名空间的一部分(请注意,在第二个实例中,前缀 (p) 绑定(bind)到“http://somenamespace”命名空间,但前缀不是分配给 person(如 p:person))。

在最后一个实例中,person 元素实际上绑定(bind)到命名空间,因此完全限定的元素是 {http://somenamespace}person。

然后,适当的查询表达式需要命名空间来解析完全限定的元素,如下所示:

<Query xmlns:p="http://somenamespace">
 ...
<ElementPath>/p:person</ElementPath>
</Query>

希望有帮助!

关于xml - 无法使用默认命名空间查询 SSRS XML 输入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11571209/

相关文章:

mysql - 如何在 Dynamics CRM 的一份报表中使用两个预过滤(使用 CRMAF_ )?

sql-server - 在 ReportExecution2005.asmx SSRS 服务上调用 Render 方法时,snapshotID 参数类型不匹配

google-app-engine - GAE,删除 NDB 命名空间

WCF 休息 : Is it possible to remove the namespace added to my response XML?

java - 基于兄弟节点的条件xquery

xml - 通过 xslt 重新排列 xml 节点,包括子节点

java - 删除 xs :annotation elements from schema

php - 用于存储少量记录的平面文件或数据库。对于许多连接/用户来说这会更快

reporting-services - 如何在 SSRS 报告的子报表中显示页眉和页脚。我在列表中有一个子报表。

ruby-on-rails - 带有命名空间的自定义设计类的未初始化常量(NameError)