3

wsdlには、LoginResponseとLOGINRESPONSEの2つのタイプ、同じ名前、異なるケースがあります。

xfireを使用してJavaクラスを生成すると、LoginResponseという1つのクラスのみが生成され、LOGINRESPONSEが破棄されます。

これを回避するにはどうすればよいですか?

<s:element name="LoginResponse">
    <s:complexType>
      <s:sequence>
        <s:element minOccurs="0" maxOccurs="1" name="LoginResult" type="tns:LOGINRESPONSE" />
      </s:sequence>
    </s:complexType>
  </s:element>

  <s:complexType name="LOGINRESPONSE">
    <s:attribute name="Message" type="s:string" />
    <s:attribute name="Token" type="s:string" />
    <s:attribute name="DataFormat" type="s:string" />
    <s:attribute name="Header" type="s:boolean" use="required" />
    <s:attribute name="Suffix" type="s:boolean" use="required" />
  </s:complexType>
4

1 に答える 1

1

WSDLで宣言された名前は実際に大文字と小文字が区別され、大文字と小文字のみが異なる名前を使用することは合法です。ただし、それは悪い考えである必要があります。

  • 確かに、読みやすさの観点からは悪い考えです。(つまり、Javaプログラムを作成している場合は、同じ名前空間で変数acatを宣言しaCatません。そうしますか?)

  • WSDLは大文字と小文字を区別しますが、プログラミング言語のバインディングでは、WSDL名を大文字と小文字を区別しないプログラム識別子(たとえば、Visual Basicの場合)にマップする必要があります。または、生成された識別子がプログラミング言語のスタイル規則に準拠するように大文字と小文字を区別する場合があります。いずれの場合も、大文字と小文字のみが異なるWSDL名は問題を引き起こす可能性があります。

IMOで問題を長期的に解決する最善の方法は、WSDLを変更して、名前が大文字と小文字だけが異なる要素や型などがないようにすることです。

于 2010-07-24T06:00:23.170 に答える