Привязать тип xsd к объекту java - PullRequest
0 голосов
/ 01 ноября 2019

Мы используем XSD-файл для генерации Java-объекта, но некоторые из них используют объект, сгенерированный из другого XSD, который мы не хотим использовать. Мы хотели бы заменить его в сгенерированном объекте Java простой строкой. Есть ли способ привязать сгенерированный XSD-объект к java-типу с помощью адаптера или чего-то подобного?

Вот пример того, что у нас есть

<xs:schema version      = "1.0"
    elementFormDefault  = "qualified"
    xmlns:xs            = "http://www.w3.org/2001/XMLSchema" 
    targetNamespace     = "http://example.com/common/task/v1"
    xmlns:nsCodeValue="http://example.com/soapcommon/basicdatatypes/code-value/v1">

        <xs:import
            schemaLocation="../../../soapcommon/v1/basicdatatypes/code-value.xsd"
            namespace="http://example.com/soapcommon/basicdatatypes/code-value/v1"/> 

    <xs:complexType name="Task"  abstract="true">
        <xs:sequence>       
            <!-- Bunch of element -->
            <xs:element name="TaskReason" type="nsCodeValue:CodeValue" minOccurs="0" />
        </xs:sequence>
    </xs:complexType>
</xs:schema>

XSD, который мы хотели бы «связать»

<xs:schema version="1.0"
  xmlns:xs="http://www.w3.org/2001/XMLSchema"
  targetNamespace="http://example.com/soapcommon/basicdatatypes/code-value/v1">
  <xs:complexType name="CodeValue">
    <xs:sequence>
       <!-- Bunch of element -->
    </xs:sequence>
  </xs:complexType>
</xs:schema>

Можем ли мы сделать что-то подобное в Binding.xjb?

<jaxb:bindings
  xmlns:jaxb="http://java.sun.com/xml/ns/jaxb" 
  xmlns:xs="http://www.w3.org/2001/XMLSchema"
  xmlns:xjc="http://java.sun.com/xml/ns/jaxb/xjc"
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xmlns:annox="http://annox.dev.java.net"
  xmlns:tns="http://esb.tsf.ab.com/enterprise/message"
  xsi:schemaLocation="http://java.sun.com/xml/ns/jaxb http://java.sun.com/xml/ns/jaxb/bindingschema_2_0.xsd"
  xmlns:nsCodeValue="http://example.com/soapcommon/basicdatatypes/code-value/v1"
  version="2.1">
  <jaxb:globalBindings>
        <xjc:serializable uid="7702" />
        <xjc:javaType adapter="com.example.adapter.CodeValueAdapter" name="java.lang.String" />
  </jaxb:globalBindings>
</jaxb:bindings>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...