DELPHI,WebService(SOAP)无法使其检索数据

时间:2018-10-22 12:53:49

标签: xml delphi soap

我已经下载了该Web服务的架构,然后使用“ RestDebugger”创建必要的pascal文件。来自Web服务的响应包含模式和“ diffgram”部分。 diffgram和模式包含在一个名为的节中,但是由“ RestDebugger”创建的原始代码不包含“ diffgram”节。我必须手动将其添加到pascal文件中。

好的,到目前为止,还不错,但是当我尝试从这部分检索数据时,我失败了。我已经使用XML Mapper创建了一个转换文件,以与组件TXMLTransform一起使用。我已经将此组件连接到TDataset和TDBGrid,但是我仅获得列标题,但没有数据。

该代码如下:

 XMLTransform1.SourceXMLFile := 'xml1.xml';
 ClientDataSet1.XMLData := XMLTransform1.Data;
 ClientDataSet1.Active := true;

在组件属性中设置转换文件:TransformationFile:“ Test.xtr”

它并不关心数据文件包含什么,只要它是有效的xml。结果是一个网格,显示具有正确标题但无数据的所有列。

我已经阅读了很多有关此问题的文档,但是找不到任何可以帮助我解决问题的文档。我不确定我应该在此处包括哪些文档,文本很多,但是我很确定它一定是我所缺少的非常基本的东西,所以我认为简单但完整的说明/示例就足够了。 否则,我认为我必须创建自己的解析函数,该函数至少可以在此特定项目上运行。但这感觉很沉重。

简而言之:

<soap:Envelope xmlns:soap="http://www.w3.org/2003/05/soap-envelope" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
   <soap:Body>
      <GetDataBySecureResponse xmlns="https://xxxxx.getdata/">
         <GetDataBySecureResult>
            <SearchNumber>674564784</SearchNumber>
            <TransactionId>1199</TransactionId>
            <Block_Name>BSDA_C_BASIC</Block_Name>
            <Parameters>
               <xs:schema id="NewDataSet" xmlns="" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
               <diffgr:diffgram xmlns:msdata="urn:schemas-microsoft-com:xml-msdata" xmlns:diffgr="urn:schemas-microsoft-com:xml-diffgram-v1">
                  <NewDataSet xmlns="">
                     <GETDATA_RESPONSE diffgr:id="GETDATA_RESPONSE1" msdata:rowOrder="0" diffgr:hasChanges="inserted">
                        <ORGNR>674564784</ORGNR>
                        <NAME>NICE NAME</NAME>
                  </NewDataSet>
               </diffgr:diffgram>
            </Parameters>
         </GetDataBySecureResult>
      </GetDataBySecureResponse>
   </soap:Body>
</soap:Envelope>

在这个简单的示例中,我将在网格中填充两列“ ORGNR”和“ NAME”,但没有行。

0 个答案:

没有答案