如何从XML消息中定义Delphi类

时间:2012-11-01 16:09:14

标签: xml delphi wsdl

我正在使用Delphi 2007。

使用WSDL导入器,我从外部WSDL创建了一个包含多个函数的单元。

不幸的是,它不包含返回的XML的显式结果类型。

F.i。函数getHash('login','password')返回以下XML:

<?xml version="1.0" encoding="UTF-8"?>
<SOAP-ENV:Envelope xmlns:SOAP-ENV="...........>
  <SOAP-ENV:Body>
    <ns1:getHashResponse>
      <return xsi:type="ns2:Map">
        <item>
          <key xsi:type="xsd:string">code</key>
          <value xsi:type="xsd:string">1004</value>
        </item>
        <item>
          <key xsi:type="xsd:string">error</key>
          <value xsi:type="xsd:string">Login was not successfull</value>
        </item>
      </return>
    </ns1:getHashResponse>
  </SOAP-ENV:Body>
</SOAP-ENV:Envelope>

由此我一直在尝试定义正确的类。 到目前为止我想出的是:

  TKeyValue = class;

  TArrayofKeyValue = array of TKeyValue;

  TKeyValue = class(TRemotable)
  private
    FKey: String;
    FValue: String;
  published
    property Key:        String        read FKey     write FKey;
    property Value:      String        read FValue   write FValue;
  end;

  function getHash(const uid: WideString; const pwd: WideString): TArrayOfKeyValue; stdcall;

当我使用此代码进行测试时,我确实得到了两个TKeyValue实例。但他们都是空的。 我的班级定义有什么问题?或者我是以错误的方式去做的?

最好是一个更好的WSDL,但这不取决于我。

0 个答案:

没有答案