从SSRS XML数据源中选择属性

从SSRS XML数据源中选择属性,xml,reporting-services,Xml,Reporting Services,我有以下XML文件: <?xml version="1.0" encoding="utf-8"?> <root> <NB> <Company>Company 1</Company> <Rank Indicator="increasing">2</Rank> <Position Indicator="decre

我有以下XML文件:

<?xml version="1.0" encoding="utf-8"?> <root> <NB> <Company>Company 1</Company> <Rank Indicator="increasing">2</Rank> <Position Indicator="decreasing">1</Rank> </NB> <NB> <Company>Company 2</Company> <Rank Indicator="decreasing">42</Rank> <Position Indicator="increasing">6</Rank> </NB> </root> 第一公司 2. 1. 公司2 42 6. 我需要做的是创建一个输出以下列的数据集:

  • 公司
  • 兰金吹奏器
  • 位置指示器
我试过这样的方法:

<Query> <ElementPath>root/ {}/NB</ElementPath> </Query> <Query> <ElementPath>root/ {}/NB/Rank{@Indicator}</ElementPath> </Query>
<Query>
    <XmlData>
        <root>
            <NB>
                <Company>Company 1</Company>
                <Rank Indicator="increasing">2</Rank>
                <Position Indicator="decreasing">1</Rank>
            </NB>
            <NB>
                <Company>Company 2</Company>
                <Rank Indicator="decreasing">42</Rank>
                <Position Indicator="increasing">6</Rank>
            </NB>
        </root>
    </XmlData>
</Query>
根/{}/NB 但是,这不包括任何属性。我通过如下方式获得了一个属性:

<Query> <ElementPath>root/ {}/NB</ElementPath> </Query> <Query> <ElementPath>root/ {}/NB/Rank{@Indicator}</ElementPath> </Query>
<Query>
    <XmlData>
        <root>
            <NB>
                <Company>Company 1</Company>
                <Rank Indicator="increasing">2</Rank>
                <Position Indicator="decreasing">1</Rank>
            </NB>
            <NB>
                <Company>Company 2</Company>
                <Rank Indicator="decreasing">42</Rank>
                <Position Indicator="increasing">6</Rank>
            </NB>
        </root>
    </XmlData>
</Query>
根/{}/NB/Rank{@Indicator} 但是,我需要排名和位置指示器,我不确定在这种情况下如何提供属性列表。
任何帮助都将不胜感激。谢谢。

如果我理解了你的评论,你必须创建一个没有连接字符串的数据源和一个新的数据集,其中XML内容作为查询字符串

这就是你应该做的:

  • 使用空连接字符串创建XML数据源
  • 为XML数据源创建新的数据集
  • 在“数据集属性”对话框中,单击“查询设计器”。将打开“基于文本的查询设计器”对话框
  • 在查询窗格中,输入以下内容:
  • 复制XML文件并将文本粘贴到查询窗格的
    之后
  • 确保删除
  • 在查询结束时,添加以下内容:
  • 单击运行查询(!)
  • 在您的情况下,您的代码如下所示:

    <Query> <ElementPath>root/ {}/NB</ElementPath> </Query> <Query> <ElementPath>root/ {}/NB/Rank{@Indicator}</ElementPath> </Query>
    <Query>
        <XmlData>
            <root>
                <NB>
                    <Company>Company 1</Company>
                    <Rank Indicator="increasing">2</Rank>
                    <Position Indicator="decreasing">1</Rank>
                </NB>
                <NB>
                    <Company>Company 2</Company>
                    <Rank Indicator="decreasing">42</Rank>
                    <Position Indicator="increasing">6</Rank>
                </NB>
            </root>
        </XmlData>
    </Query>
    
    
    第一公司
    2.
    1.
    公司2
    42
    6.
    
    如果要指定参数,请执行以下操作:

        </XmlData>
        <ElementPath>YourField {@}</ElementPath>
    </Query>
    
    
    您的字段{@}
    
    编辑

    根据您的评论,要检索特定字段,请执行以下操作:

    {FieldA,FieldB,FieldC}

    资料来源:


    您是否尝试过使用XML作为数据源?这正是我正在做的,但是我不知道如何编写查询表达式以获得所需的内容。好的,我将发布一个答案。好的,我知道我被误解了。我已经有了一个XML数据源和数据集。我的问题是,我不知道如何在查询中编写ElementPath表达式来获取所需的数据。也就是说,问题是我无法找出如何从秩和位置节点同时获取指标属性。我可以得到其中一个没有问题,但我不知道如何在同一个查询中获得这两个字段。只需使用逗号
    添加更多字段:
    {@Id(整数),@IdXpto(整数),@FieldD,@FooA,@FooB}
    。那对你不管用吗?太好了,那正是我想要的。最后一个查询:root/{}/NB{Company,Rank{@Indicator},Position{@Indicator}谢谢。这回答了我如何在SRS中使用XML“文件”,然后使用基本查询的问题。:)很好的回答。在第4点中,我如何从服务器位置动态选择xml文件,因为我有多个xml文件,并且在某些条件下必须选择一个