我在 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/