2015-08-12 7 views
0

У меня есть xsd с 2 элементами: «состояние» и «состояние». Когда я выполняю XJC с использованием Maven-jaxb2-плагин, я получаю следующее сообщение об ошибке:Ошибка XJC для XSD с двумя элементами с одинаковым именем, но с другим регистром

<xsd:element name="state" type="xsd:string" minOccurs="0" maxOccurs="1" /> 
. 
. 
. 
<xsd:element name="State" type="xsd:string" minOccurs="0" maxOccurs="1" /> 

SAXParseException2: Two declarations cause a collision in the ObjectFactory class 

Это, как ожидается, так как он пытается преобразовать элемент с «S Tate» до «сек татэ» внутренне что вызывает конфликт с уже существующим «государством». Мой вопрос в том, есть ли способ поддержать дело?

ПРИМЕЧАНИЕ: Я знаю, что это не идеальное решение, в первую очередь, иметь одинаковые имена элементов, но, к сожалению, я не могу контролировать изменение XSD.

ответ

1

Почему вы не используете настройки jaxb:class или jaxb:factoryMethod, чтобы избежать присвоения имен?

Что-то вроде:

<jaxb:bindings node="xs:element[@name='state']"> 
    <jaxb:factoryMethod name="LowerState"/> 
</jaxb:bindings> 
+0

Спасибо !! Работает отлично. – Pratik