Я должен использовать схему, которая содержит следующий фрагмент, где дублируется имя object
.JaxB переименовать класс с дублирующимся именем
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:complexType name="param_object_type">
<xs:sequence>
<xs:element name="object" minOccurs="0" maxOccurs="unbounded">
<xs:complexType>
<xs:sequence>
<xs:element name="object" minOccurs="0" maxOccurs="unbounded">
</xs:sequence>
</xs:complexType>
</xs:sequence>
</xs:complexType>
</xs:schema>
JAXB первоначально был счастлив импортировать, но будет не в состоянии собрать источники, так как класс объекта был дважды объявлен.
Я добавил globalBindings
вариант localScoping="toplevel"
и это приводит теперь к следующей компиляции ошибки времени:
org.xml.sax.SAXParseException; systemId: A class/interface with the same name "jaxb.Object" is already in use. Use a class customization to resolve this conflict.
Так что я попытался добавить пользовательские привязки переименовать один из объектов, jaxb:class
и jaxb:property
. Оба имеют ту же ошибку.
Если это помогает, вот подадут привязки:
<jaxb:bindings version="2.0" xmlns:jaxb="http://java.sun.com/xml/ns/jaxb" xmlns:xs="http://www.w3.org/2001/XMLSchema">
<jaxb:bindings>
<jaxb:globalBindings generateElementProperty="false" fixedAttributeAsConstantProperty="true" choiceContentProperty="true" localScoping="toplevel"/>
</jaxb:bindings>
<jaxb:bindings schemaLocation="../xsd/NodeSchema.xsd" node="/xs:schema">
<jaxb:bindings node="/xs:schema/xs:complexType[@name='param_object_type']/xs:sequence/xs:element[@name='object']">
<jaxb:class name="object2"/>
</jaxb:bindings>
</jaxb:bindings>
</jaxb:bindings>
Как я могу убедиться, что один из этих случаев получает переименовано, а другие остаются нетронутыми?
Вы решили эту проблему? Если вы решите его, как вы это сделали? – Xstian
Исправлено, используя ответ ниже. Огромное спасибо. – nwb