XJC генерирует пространства имен - PullRequest
1 голос
/ 12 августа 2010

Я пытаюсь сгенерировать исходные файлы java из пакета *.xsd файлов с помощью инструмента генерации кода xjc .

Пространства имен, используемые в этих * .xsd-файлах, следующие:

http://www.domain.com/foo/bar.x  
http://www.domain.com/foo/bar.x.y  
http://www.domain.com/foo/bar.x.y.z  

XJC создает пакеты следующим образом:

com.domain.foo.bar.x и помещает сгенерированные java-файлы из пространств имен xsd "... x" и "... xy"

com.domain.foo.bar.x_y и помещает сгенерированные java-файлы из "...xyz "там есть пространства имен xsd

То, чего я хотел бы достичь, является правильным:

com.domain.foo.bar.x  
com.domain.foo.bar.x.y  
com.domain.foo.bar.x.y.z package names  

Возможно ли это как-то?Может быть, использовать пользовательские привязки JAXB ?Я изучал пользовательские документы по связыванию jaxb, но я не уверен, возможно ли это.

В основном я хотел бы, чтобы xjc обрабатывал как "/", так и "".в качестве разделителей пакетов.

Любая помощь приветствуется.

Adalbert

1 Ответ

6 голосов
/ 03 сентября 2010

Использование jaxb:package Настройка:

<jaxb:bindings
    xmlns:jaxb="http://java.sun.com/xml/ns/jaxb"
    xmlns:xsd="http://www.w3.org/2001/XMLSchema"
    jaxb:version="2.1">

    <jaxb:bindings schemaLocation="schema.xsd" node="/xsd:schema">
        <jaxb:schemaBindings>
            <jaxb:package name="com.domain.foo.bar.x.y.z"/>
        </jaxb:schemaBindings>
    </jaxb:bindings>
</jaxb:bindings>

В качестве альтернативы вы можете переименовать ваше пространство имен в http://www.domain.com/foo/bar/x/y/z.

...