2010-12-10 6 views
3

WSDLをSalesforceにインポートしようとしていますが、XML要素の1つに要素と文字列の値の両方が含まれています。Salesforce WSDLのsimpleContent(拡張子付き)のインポート

<foo bar="bob">baz</foo> 

私はアペックスツールにWSDLを使用して、これをインポートすると、文字列の値が生成されたクラスでは使用できません - ちょうど属性。ここで

は、WSDLの抜粋です:

<xs:complexType name="password"> 
    <xs:simpleContent> 
    <xs:extension base="xs:string"> 
     <xs:attribute name="Type" type="xs:string"/> 
    </xs:extension> 
    </xs:simpleContent> 
</xs:complexType> 

生成されたクラスは、次のとおりです。

public class password { 
    public String Type_x; 
    private String[] Type_x_att_info = new String[]{'Type'}; 
    private String[] apex_schema_type_info = new String[]{'http://schema.test.org/1_0','false','false'}; 
    private String[] field_order_type_info = new String[]{}; 
} 

は、私は手動で内部要素なしで価値を提供するために、このクラスを変更することができます方法はありますか?

答えて

2

お気づきのように、WSDL2Apexはxs:extensionを正しくサポートしていません(これは、サポートされているWSDLの機能の一覧()のページにありません)。

変更あなたの生成されたクラスのようなもの見て:あなたはまた、この余分なパラメータを可能にするためにあなたのSOAPオペレーションのために生成方法を変更する必要があり

public class password { 
    public String input; 
    public String Type_x; 
    private String[] input_type_info = new String[]{'input','http://www.w3.org/2001/XMLSchema','string','1','1','false'}; // change 'input' to be the desired name of your element 
    private String[] Type_x_att_info = new String[]{'Type'}; 
    private String[] apex_schema_type_info = new String[]{'http://schema.test.org/1_0','false','false'}; 
    private String[] field_order_type_info = new String[]{}; 
} 

を - それはあなたのWSDLがどのように見えるかに依存します。

0

下位のWebServiceCallout.invokeは、属性も持つ単純型の拡張をサポートしていません。あなたはどちらか一方を持つことができますが、両方を持つことはできません。

無料のFuseIT SFDC Explorerツールを作成しました。このツールには、Wsdl2Apexの代替バージョンが含まれています。これには、Apexで生のHttpRequestと対応するSOAP XMLメッセージを生成するオプションが含まれます。これで、必要なWebメソッドを呼び出すことができます。

関連する問題