2010-07-24 89 views
3

在wsdl我有两种类型,相同的名称,不同的情况:LoginResponse和LOGINRESPONSE。wsdl java类区分大小写

如果我使用xfire生成java类,它只会生成一个类,LoginResponse, 丢弃LOGINRESPONSE。

我该如何解决这个问题?在WSDL声明

<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> 
+0

这可能是“xfire”的一些缺陷。 但是你可以通过完全不同的名字来避免相同的情况。 – YoK 2010-07-24 06:35:17

回答

1

名称确实是大小写敏感的,这是法律只使用在他们的大小写不同的名称。然而,它必须是一个坏主意:

  • 当然,从可读性的角度来看这是一个坏主意。 (我的意思是,如果你在写一个Java程序,你就不会在同一个名字声明变量acataCat。你会?)

  • 虽然WSDL是大小写敏感的,编程语言绑定需要WSDL名称映射不区分大小写的程序标识符(例如,在Visual Basic中我相信),或者他们可能会对它们进行破坏,以使生成的标识符符合编程语言的样式约定。无论哪种情况,仅在字母大小写方面不同的WSDL名称都可能导致问题。

IMO有关问题的最好的长期解决办法是改变WSDL,这样你就不必元素,类型等的名称仅大小写不同。

+1

wsdl超出了我的控制范围。不过,我可以将wsdl保存为本地文件,手动修改该文件,然后从中生成Java类。这并不理想,但现在已经足够了。 – portoalet 2010-07-25 15:48:31