Java 当XSD元素没有定义类型(type ur type)但在SOAP响应中返回子类型时,Axis2会失败?

Java 当XSD元素没有定义类型(type ur type)但在SOAP响应中返回子类型时,Axis2会失败?,java,soap,xsd,wsdl,axis2,Java,Soap,Xsd,Wsdl,Axis2,我面临使用Axis2的SOAP Web服务客户端的问题;扩展WSDL的XSD文件包含响应中元素的以下定义,请注意无类型的定义方式: <xs:element name="error" minOccurs="0"/> 服务人员说,由于“error”元素没有类型定义,因此它可以包含字符串、日期或其他结构等所有内容 我真的不相信;那么,没有为元素定义类型是什么意思 另外,我们是否可以对WSDL或Axi2 wsdl2java存根生成命令进行任何更改,以避免出现这种情况?知道我们实际上可能会在

我面临使用Axis2的SOAP Web服务客户端的问题;扩展WSDL的XSD文件包含响应中元素的以下定义,请注意无类型的定义方式:

<xs:element name="error" minOccurs="0"/>
服务人员说,由于“error”元素没有类型定义,因此它可以包含字符串、日期或其他结构等所有内容

我真的不相信;那么,没有为元素定义类型是什么意思

另外,我们是否可以对WSDL或Axi2 wsdl2java存根生成命令进行任何更改,以避免出现这种情况?知道我们实际上可能会在响应中接收到一些其他子类型,而不是


更新:我使用的是Axis2 1.5.4,W3C XSD规范似乎说在这种情况下我们可以有子类型(当使用ur类型时,即没有定义类型),那么Axis2为什么拒绝这样做呢?

您的服务人员是正确的

根据W3C XSD建议:

{type definition}与 或中的元素信息项 [children],如果存在,则返回类型定义 ·由类型[属性]的实际值解析为,否则 元素声明的{type definition}由 ·替换组[属性]的实际值,如果存在, 否则··

跟随的链接将产生没有指定类型默认为anyType的结果


您当然可以通过提供需要
详细信息
元素的类型来收紧
错误的定义。由于只考虑到XSD的约束,因此这是否避免了异常尚不清楚,您应该能够在
错误中放置
详细信息
元素。您的应用程序软件(Axis2)可能会施加额外的要求,而这些要求并非完全由XSD指定

您的服务人员是正确的

根据W3C XSD建议:

{type definition}与 或中的元素信息项 [children],如果存在,则返回类型定义 ·由类型[属性]的实际值解析为,否则 元素声明的{type definition}由 ·替换组[属性]的实际值,如果存在, 否则··

跟随的链接将产生没有指定类型默认为anyType的结果


您当然可以通过提供需要
详细信息
元素的类型来收紧
错误的定义。由于只考虑到XSD的约束,因此这是否避免了异常尚不清楚,您应该能够在
错误中放置
详细信息
元素。您的应用程序软件(Axis2)可能会施加额外的要求,而这些要求并非完全由XSD指定

服务人员是对的,请看一看:
元素中应该允许任何内容。我现在也同意。。那么我可以在Axis2中解决这个问题吗?到目前为止,唯一的选择是手动编辑生成的存根代码。。讨厌!如果我必须将我的项目转移到ApacheCXF,那么成本相当高。服务人员是对的,请看一看:
元素中应该允许任何内容。我现在也同意。。那么我可以在Axis2中解决这个问题吗?到目前为止,唯一的选择是手动编辑生成的存根代码。。讨厌!如果我必须将我的项目转移到ApacheCXF,那么成本相当高。检查“ur Type”(空类型)定义,服务人员似乎是正确的。然而,与往常一样,Axis2具有奇怪的行为,并且正在失败。太糟糕了,我无法在XSD中明确定义“details”元素,因为服务可能根本不返回任何元素,甚至不返回另一个元素名。检查“ur Type”(空类型)定义,服务人员似乎是正确的。然而,与往常一样,Axis2具有奇怪的行为,并且正在失败。太糟糕了,我无法在XSD中显式定义“details”元素,因为服务可能根本不返回任何元素,甚至不返回另一个元素名。
<error>
   <details>Unexpected Error Occurred</details>
</error>
org.apache.axis2.AxisFault: javax.xml.stream.XMLStreamException: element text content may not contain START_ELEMENT
                at org.apache.axis2.AxisFault.makeFault(AxisFault.java:430)
                at fr.cel.service.HooStub.fromOM(HooStub.java:847