接口文件中的类TMyClass
是从其父类TMyRemotable
派生的,而父类又是从TRemotable
派生的。
生成的WSDL的问题是TMyClass
的发布属性未以<complex>
类型显示。
请考虑以下代码段:
Sample.pas
TMyRemotable = class(TRemotable)
public
class function NewInstance: TObject; override;
destructor Destroy; override;
end;
UserIntf.pas //接口文件
TMyClass = class(TMyRemotable)
private
FUserName: string;
FpassWord: string;
published
property UserName: string read FUserName write FUserName;
property Password: string read FpassWord write FpassWord;
end;
我们得到以下输出:
<types>
<xs:schema xmlns="urn:UserIntf" targetNamespace="urn:UserIntf">
<xs:complexType name="TMyClass">
<xs:sequence/>
</xs:complexType>
预期输出:
<types>
<xs:schema xmlns="urn:UserIntf" targetNamespace="urn:UserIntf">
<xs:complexType name="TMyClass">
<xs:sequence>
<xs:element name="UserName" type="xs:string"/>
<xs:element name="PassWord" type="xs:string"/>
</xs:sequence>
请指导我如何将已发布的属性包括在生成的WSDL文件中。
答案 0 :(得分:2)
如果希望属性在类型的相应SOAP编码中显示为元素节点或属性,则需要为它们使用一些不同的声明。实际上,它们需要声明为索引属性,如下所示:
published
property Text: WideString index IS_TEXT read FText write FText;
您可以在Embarcadero的官方文档中阅读有关此内容的更多信息: