3

在 wsdl 中,我有 2 种类型,相同的名称,不同的情况:LoginResponse 和 LOGINRESPONSE。

如果我使用 xfire 生成 java 类,它只生成一个类 LoginResponse,丢弃 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 程序,你不会在同一个命名空间中声明变量。你会吗?acataCat

  • 虽然 WSDL 区分大小写,但编程语言绑定需要将 WSDL 名称映射到不区分大小写的程序标识符(例如,我相信在 Visual Basic 中),或者它们可能会区分大小写,以便生成的标识符符合编程语言的样式约定。在任何一种情况下,仅字母大小写不同的 WSDL 名称都会导致问题。

IMO 对您的问题的最佳长期解决方案是更改 WSDL,以便您没有名称仅因大小写而异的元素、类型等。

于 2010-07-24T06:00:23.170 回答