Столкновение имени XMLBeans для атрибута и элемента с одинаковым именем - PullRequest
0 голосов
/ 24 января 2019

Я использую XMLBeans для создания кода Java из файла XSD. Теперь в этот XSD-файл добавлен новый элемент с тем же именем, что и у атрибута того же суперэлемента. Смотрите сокращенный пример. Поле элемента теперь имеет массив значений, кроме существующего атрибута значения.

<xs:element name="Field">
 <xs:complexType>
 <xs:sequence>
  <xs:sequence minOccurs="0" maxOccurs="1">...
    <xs:element ref="Value" minOccurs="0" maxOccurs="unbounded"/>
  </xs:sequence>
 </xs:sequence>
<xs:attribute name="value" type="xs:string"/>...

После этого обновления при генерации кода создаются атрибуты setter и getter с разными именами для атрибута setValue2 / getValue2. До этого было установлено значение / getValue. Setter и getter элемента Value называются setValueArray / getValueArray, поэтому реального столкновения нет, но я предполагаю, что генерация по-прежнему соответствует принципу, описанному на странице apache XMLBeans: «При наличии конфликтов имен сгенерированные типы будут иметь имена с цифрами добавлен, например, "TestType2". "

Я бы хотел изменить имя получателя атрибута Value и имя установщика обратно на имя, которое они имели раньше, чтобы мне не пришлось менять свой код Java. Как я могу добиться этого с помощью xsdconfig или любым другим способом? Проблема в том, что элемент Value также существует для других элементов в XSD, поэтому я не могу сделать простое изменение имени, как это предлагается на вики-странице xmlBeans / xmlconfig. Я ищу способ включить путь в элемент name, см. Пример ниже.

    <xb:qname name="na:Field/Value" javaname="Values"/>

Я хочу изменить имя элемента Value только тогда, когда он является элементом поля.

...