Добавление префикса JAXB генерировало классы

Я бы разбил после обрезки предыдущего или конечного мусора:

String s = "Item(s): [item1.test], [item2.qa],[item3.production] ";
String r1 = "(^.*?\\[|\\]\\s*$)", r2 = "\\]\\s*,\\s*\\[";
String[] ss = s.replaceAll(r1,"").split(r2);
System.out.println(Arrays.asList(ss));
// [item1.test, item2.qa, item3.production]
12
задан Bart van Heukelom 21 May 2009 в 10:40
поделиться

1 ответ

Это обычное требование. Вы можете сделать это, предоставив дополнительный файл привязки JAXB для настройки того, как JAXB переводит имена типов схемы в имена классов Java.

Эти файлы обычно заканчиваются расширением «.xjb». Вам нужно создать его для своей схемы, например:

<jxb:bindings version="1.0" 
  xmlns:jxb="http://java.sun.com/xml/ns/jaxb" 
  xmlns:xs="http://www.w3.org/2001/XMLSchema" 
  xmlns:xjc="http://java.sun.com/xml/ns/jaxb/xjc" 
  jxb:extensionBindingPrefixes="xjc">

    <jxb:bindings schemaLocation="nl.company.service.xsd" node="/xs:schema">
        <jxb:schemaBindings>
            <jxb:nameXmlTransform>
                <jxb:typeName prefix="XML"/>
                <jxb:anonymousTypeName prefix="XML"/>
            </jxb:nameXmlTransform>
        </jxb:schemaBindings>
    </jxb:bindings>

</jxb:bindings>

После того, как вы это сделаете, перетащите файл xjb где-нибудь в каталог сборки и скажите Maven использовать его во время перевода:

<includeBindings>
    <includeBinding>mybindings.xjb</includeBinding>
</includeBindings>

И вот подсказка для дорога: если вы находитесь на пути, содержащем пробелы (например, «Документы и настройки \ пользователь \ проект»), тогда JAXB выйдет из строя со странными ошибками.

21
ответ дан 2 December 2019 в 07:22
поделиться
Другие вопросы по тегам:

Похожие вопросы: