2013-07-16 2 views
2

У меня есть эта XSD схема:JAXB 2,0 XSD choiceContentProperty неправильное поведение

<xs:schema elementFormDefault="qualified" xmlns:xs="http://www.w3.org/2001/XMLSchema" 
     xmlns:jaxb="http://java.sun.com/xml/ns/jaxb" jaxb:version="1.0"> 

<xs:annotation> 
    <xs:appinfo> 
     <jaxb:globalBindings choiceContentProperty="true"/> 
    </xs:appinfo> 
</xs:annotation> 

<xs:element name="request1"> 
    <xs:complexType> 
     <xs:choice> 
      <xs:sequence> 
       <xs:element name="request2"> 
        <xs:complexType> 
         <xs:sequence> 
          <xs:element type="xs:string" name="field1"/> 
         </xs:sequence> 
        </xs:complexType> 
       </xs:element> 
       <xs:element name="request3"> 
        <xs:complexType> 
         <xs:sequence> 
          <xs:element type="xs:string" name="field2"/> 
         </xs:sequence> 
        </xs:complexType> 
       </xs:element> 
      </xs:sequence> 

      <xs:element name="request4"> 
       <xs:complexType> 
        <xs:sequence> 
         <xs:element type="xs:string" name="field3"/> 
        </xs:sequence> 
       </xs:complexType> 
      </xs:element> 

     </xs:choice> 
    </xs:complexType> 
</xs:element> 

И CxF Codegen плагин созданный класс с List<Object>. Но мне нужно получить request2, request3, request4 поля с геттерами и сеттерами в классе request1. Возможно?

ответ

1

Фактически, установка choiceContentProperty на true заставляет элементы отображаться в одном свойстве (List<Object>). Установка его на false изменяет поведение, т. Е. Элементы будут обернуты в отдельные свойства. Об этом сообщается here подробнее.

Если вы не можете изменить свой XSD, вам следует рассмотреть возможность использования external bindings files.

<?xml version="1.0" encoding="UTF-8"?> 
<jxb:bindings version="2.0" xmlns:jxb="http://java.sun.com/xml/ns/jaxb" xmlns:xsd="http://www.w3.org/2001/XMLSchema"> 
    <jxb:globalBindings choiceContentProperty="false" /> 
</jxb:bindings> 

Примечание: Это поведение можно установить только по всему миру, поэтому его изменение может повлиять и на другие элементы.

Смежные вопросы