您如何使用SSRS中的XML集合?

时间:2014-12-17 14:12:36

标签: xml reporting-services dataset

正如标题所述,我不确定如何使用XML集合,并会欣赏可以提供的任何示例。

我的例子如下:

您有一个数据源从数据库中的表中提取行。从数据库返回的数据集中的一个字段包含XML

<Root> <Item1>Test</Item1> <Item2> <Item3>95 Points</Item3> <Item3>269 Points</Item3> <Item4> <Item5>Gold Star</Item5> <Item5>Silver Star</Item5> </Item4> </Item2> <Root>

在数据集中,您可以将字段指定为Item1Item2 (Item2 contains a collection of Item3 and Item4 (which contains a collection of Item5))

我知道以下内容 - 在表达式占位符中,您可以使用以下内容访问Item1的内容

=First(First!Item1.Value, "XmlDataSet)

我现在需要知道

1 - 如何访问Item3中所有Item2元素的内容,=First(First(Item2.Value, "XmlDataSet").Item3.Value, "XmlDataSet)是否有效?

2 - 如果没有,是否有其他方法可以采用这种方法,(因为必须在SSRS中使用平面XML文件)?

1 个答案:

答案 0 :(得分:0)

我总是将SQL端的XML分解为列。 您可以使用XQuery函数访问XML节点。

选择

 [XMLColumnName].value('(/Root//Item1/node())[1]', 'nvarchar(max)') AS 'Item1' ,
 [XMLColumnName].value('(/Root//Item2/Item3/node())[1]', 'nvarchar(max)') AS 'Item3_1',
 [XMLColumnName].value('(/Root//Item2/Item3/node())[2]', 'nvarchar(max)') AS 'Item3_2' 

FROM tableName

希望这有帮助。