У вас есть несколько вариантов разрешения конфликта имен.
Вариант № 1 - Аннотация схемы
Вы можете аннотировать схему XML для разрешения конфликта имен:
<xs:element name="Fault">
<xs:annotation>
<xs:appinfo>
<jaxb:class name="Fault2" />
</xs:appinfo>
</xs:annotation>
<xs:complexType>
<xs:sequence>
<xs:element ref="bmw:fault"/>
</xs:sequence>
</xs:complexType>
</xs:element>
abc.xsd
См. Аннотацию схемы для элемента «Неисправность».
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
elementFormDefault="qualified" targetNamespace="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:env="http://schemas.xmlsoap.org/soap/envelope/" xmlns:bmw="http://foo.com/bbs"
xmlns:jaxb="http://java.sun.com/xml/ns/jaxb" jaxb:version="2.1">
<xs:import namespace="http://foo.com/bmw" schemaLocation="bmw.xsd" />
<xs:element name="Envelope">
<xs:complexType>
<xs:sequence>
<xs:element ref="env:Header" />
<xs:element ref="env:Body" />
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="Header">
<xs:complexType>
<xs:sequence>
<xs:element ref="bmw:rule"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="Body">
<xs:complexType>
<xs:sequence>
<xs:element ref="env:Fault" />
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="Fault">
<xs:annotation>
<xs:appinfo>
<jaxb:class name="Fault2" />
</xs:appinfo>
</xs:annotation>
<xs:complexType>
<xs:sequence>
<xs:element ref="bmw:fault"/>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>
Опция № 2 - Файл внешних привязок
Вместо изменения схемы XML вы также можете использовать файл внешних привязок:
bindings.xml
<jaxb:bindings
xmlns:xs="http://www.w3.org/2001/XMLSchema"
xmlns:jaxb="http://java.sun.com/xml/ns/jaxb"
version="2.1">
<jaxb:bindings schemaLocation="abc.xsd">
<jaxb:bindings node="//xs:element[@name='Fault']">
<jaxb:class name="Fault2"/>
</jaxb:bindings>
</jaxb:bindings>
</jaxb:bindings>
Команда xjc будет:
xjc -d out -b bindings.xml abc.xsd
<Ч />
Название пакета
Для управления именем пакета вы можете передать его в качестве параметра команде XJC:
xjc -d out -b bindings.xml -p com.foo.bar abc.xsd
Или исправьте файл привязок.