【问题标题】:generic type xsd like in java像 java 中的泛型类型 xsd
【发布时间】:2020-03-18 17:07:36
【问题描述】:

问题:在 xsd 对象定义中是否可以像在 Java 泛型中一样具有相同的行为?

所以基本上我需要的是 Soap 方法将 xml 对象类型返回为返回对象(子对象之一)的具体类型,而不是父对象,即基类型。基本上 wsdl 表示返回的对象是父对象,或者是子对象之一。

更具体的:

Java:

  public <T extends BaseObject> T getData(){
    ....
    return oneOfTheChildObjectsOfBaseObject;
   }

xsd:

           <xs:complexType name="baseObject">
             <xs:complexContent>
               <xs:sequence>
                 <xs:element name="element1" type="xs:string"/>
                </xs:sequence>
              </xs:complexContent>
            </xs:complexType>


    <xs:complexType name="Child1">
        <xs:complexContent>
         <xs:extension base="tns:baseObject">
                      .... specific child props
          </xs:extension>
        </xs:complexContent>
      </xs:complexType>
      <xs:complexType name="Child2">
        <xs:complexContent>
         <xs:extension base="tns:baseObject">
                   .... specific child props
          </xs:extension>
        </xs:complexContent>
      </xs:complexType>

【问题讨论】:

    标签: java spring soap xsd spring-ws


    【解决方案1】:

    SOAP 消息只是一个 XML 文档,其中包含符合 SOAP 架构的信封和符合其中一种操作类型架构的 &lt;body&gt; 标记。

    在 XML 中执行所需操作的标准方法是使用 xsi:type 属性提供元素的具体类型。您指定的类型必须从基本类型派生,否则 XML 处理器应该报告错误。根据 XSD 的构造方式,可能还有其他关于允许哪些类型的规则。

    为了完整起见,您可能还想了解替换组 - 它们为元素而不是类型提供等效机制。

    【讨论】:

    • 是的,这就是答案,我同时找到了答案。我要在这里添加:如果您在服务器上使用 jaxb,也可以在客户端 jaxb 上使用,因为我看到了差异,例如,它确实不能在客户端使用 spring boot 的功能。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-05-02
    • 1970-01-01
    • 2013-05-10
    相关资源
    最近更新 更多