我正在开发一个将Web服务作为数据集的报告。我有服务返回序列化的数据集,并且在使正确的ElementPath工作时遇到一些麻烦。我特别阅读了有关XML的页面 https://docs.microsoft.com/en-us/sql/reporting-services/report-data/element-path-syntax-for-xml-report-data-ssrs,但无济于事。
我的数据看起来像这样:
<?xml version="1.0" encoding="utf-8"?> <soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"> <soap:Body>
<GetAxisMeasuresResponse xmlns="http://tempuri.org/">
<GetAxisMeasuresResult>
<xs:schema id="NewDataSet" xmlns="" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xs:element name="NewDataSet" msdata:IsDataSet="true" msdata:UseCurrentLocale="true">
<xs:complexType>
<xs:choice minOccurs="0" maxOccurs="unbounded">
<xs:element name="AxisMeasurement">
<xs:complexType>
<xs:sequence>
<xs:element name="Axis" type="xs:int" minOccurs="0" />
<xs:element name="Average" type="xs:float" minOccurs="0" />
<xs:element name="Range" type="xs:float" minOccurs="0" />
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:choice>
</xs:complexType>
</xs:element>
</xs:schema>
<diffgr:diffgram xmlns:msdata="urn:schemas-microsoft-com:xml-msdata" xmlns:diffgr="urn:schemas-microsoft-com:xml-diffgram-v1">
<NewDataSet xmlns="">
<AxisMeasurement diffgr:id="AxisMeasurement1" msdata:rowOrder="0">
<Axis>0</Axis>
<Average>3.71116638</Average>
<Range>0.0333445072</Range>
</AxisMeasurement>
<AxisMeasurement diffgr:id="AxisMeasurement2" msdata:rowOrder="1">
<Axis>1</Axis>
<Average>1.66359055</Average>
<Range>0.09599972</Range>
</AxisMeasurement>
我的SSRS查询和Element路径看起来像这样:
<Query>
<Method Namespace="http://tempuri.org/" Name="GetAxisMeasures">
</Method>
<SoapAction>http://tempuri.org/GetAxisMeasures</SoapAction>
<ElementPath IgnoreNamespace="false">
GetAxisMeasuresResponse {}/GetAxisMeasuresResult {}/diffgram {}/NewDataSet {}/AxisMeasurement{Axis, Average, Range}
</ElementPath>
</Query>
现在,当我通过报告执行查询时,我根本没有得到任何列。就好像报告没有得到结果。但是,如果我删除路径并返回默认值,我会在结果集顶部的架构中定义三个元素。
我所要做的就是让三列Axis,Average和Range出现在Report数据窗格中,这样我就能在报表上显示它们。
非常感谢提前。