1

我创建了一个 Web 服务,它返回一个我手动填充数据的数据集。当我启动服务并获得结果时,这是我返回的 XML。

<DataSet>
  <xs:schema id="Results">
    <xs:element name="Results" msdata:IsDataSet="true" msdata:UseCurrentLocale="true">
      <xs:complexType>
        <xs:choice minOccurs="0" maxOccurs="unbounded">
          <xs:element name="BillInfo">
            <xs:complexType>
              <xs:sequence>
                <xs:element name="AccountType" type="xs:string" minOccurs="0"/>
                <xs:element name="AccountNumber" type="xs:string" minOccurs="0"/>
                <xs:element name="AmountDue" type="xs:decimal" minOccurs="0"/>
                <xs:element name="BillDescription" type="xs:string" minOccurs="0"/>
                <xs:element name="DaysTilDue" type="xs:int" minOccurs="0"/>
              </xs:sequence>
            </xs:complexType>
          </xs:element>
        </xs:choice>
      </xs:complexType>
    </xs:element>
  </xs:schema>

  <diffgr:diffgram>
    <Results>
      <BillInfo diffgr:id="BillInfo1" msdata:rowOrder="0" diffgr:hasChanges="inserted">
        <AccountType>PP</AccountType>
        <AccountNumber>1</AccountNumber>
        <AmountDue>307.6500</AmountDue>
        <BillDescription>Bill Number 20121</BillDescription>
        <DaysTilDue>-362</DaysTilDue>
      </BillInfo>
      <BillInfo diffgr:id="BillInfo2" msdata:rowOrder="1" diffgr:hasChanges="inserted">
        <AccountType>PP</AccountType>
        <AccountNumber>1</AccountNumber>
        <AmountDue>307.6500</AmountDue>
        <BillDescription>Bill Number 20121</BillDescription>
        <DaysTilDue>-362</DaysTilDue>
      </BillInfo>
    </Results>
  </diffgr:diffgram>
</DataSet>

如果我没有设置元素路径并尝试将我的 SSRS 数据集设置为等于结果,我会得到作为信息返回的架构。每当我尝试输入元素路径时,我都没有得到任何结果。我不确定我做错了什么。下面我展示了我正在使用的查询,包括 ElementPath 来加载我的 SSRS 数据集

<Query>
    <SoapAction>http://tempuri.org/GetBillData</SoapAction>
    <Method Namespace="http://tempuri.org/" Name="GetBillData" />
      <Parameters>
        <Parameter Name="PartyID">
          <DefaultValue>0</DefaultValue>
        </Parameter>
      </Parameters>
    <ElementPath IgnoreNamespaces="True"> DataSet {}/ diffgram {}/ Results {}/BillInfo</ElementPath>
</Query>

如果有人知道我做错了什么,我很想听听。

谢谢

4

2 回答 2

2

这将使它肯定工作。一切都是正确的语法

<Query>
<Method Name="GetBillData" Namespace="http://tempuri.org/" >
<Parameters>
<Parameter Name="PartyID">
<DefaultValue>0</DefaultValue>
</Parameter>
</Parameters>
</Method>
<ElementPath IgnoreNamespaces="True">
GetBillDataResponse/GetBillDataResult/diffgram/Results/BillInfo
</ElementPath>
<SoapAction>http://tempuri.org/GetBillData</SoapAction>
</Query>
于 2014-12-10T12:40:10.300 回答
1

如果我没记错的话,“ElementPath”必须像这样开始:GetBillDataResponse{}/GetBillDataResult{}/DataSet{}/diffgram{}... Fiddler可以帮助您了解数据结构。

于 2012-12-10T09:06:25.487 回答