4

XML 要素の 1 つに要素と文字列値の両方が含まれている WSDL を Salesforce にインポートしようとしています。

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

WSDL to Apex ツールを使用してこれをインポートすると、生成されたクラスでは文字列値が使用できず、属性のみが使用されます。

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[]{};
}

このクラスを手動で変更して、内部要素なしで値を提供する方法はありますか?

4

2 に答える 2

3

お気づきのとおり、WSDL2Apex は xs:extension を正しくサポートしていません ( http://www.salesforce.com/us/developer/docs/apexcode/salesforce_apex_language_reference.pdfの 201 ページにあるサポートされている WSDL 機能のリストにはありません)。 )。

生成されたクラスを次のように変更します。

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[]{};
}

また、SOAP 操作用に生成されたメソッドを変更して、この追加パラメーターを許可する必要がある場合もあります。これは、WSDL がどのように見えるかによって異なります。

于 2010-12-22T01:55:24.977 に答える