Генерация Java-кода из XML в Eclipse

Я работаю над проектом, который будет иметь несколько классов Java, которые очень похожи друг на друга, и которые я хотел бы генерировать из файлов XML. То, что я хотел бы сделать, это изменить процесс сборки Eclipse, чтобы сделать что-то вроде этого:

Compile the code generator Run the code generator, converting the XML to Java Compile the rest of the project

Я мог бы сделать все это вручную, но я бы предпочел, чтобы Eclipse сделал все это для меня.

Example

Я хочу иметь возможность взять исходный XML-файл, который выглядит следующим образом:

<command-list>
    <command name="DATE" />
    <command name="GROUP">
        <capability "READER" />
        <argument "groupname" />
    </command>
    <command name="ARTICLE">
        <capability "READER" />
        <argument "message-id" optional="true" />
    </command>
</command-list>

и пусть он даст мне что-то похожее на следующее (в отдельных файлах в зависимости от ситуации):

public class Date extends Command {
    public ResponseCode execute() {
        Server srv = getServer();
        srv.send("DATE");
        return srv.getResponse();
    }
}

public class Group extends Command {
    public ResponseCode execute() {
        Server srv = getServer();
        if (srv.hasCapability(Capabilities.READER) == false) {
            Log.debug("Attempting non-available capability: READER");
        }
        String groupname = getArgument("groupname");
        if (groupname == null) {
             throw new InvalidArgumentException("Require groupname");
        }
        String command = "GROUP";
        if (groupname != null) command += " " + groupname;
        srv.send(command);
        return srv.getResponse();
    }
}

public class Article extends Command {
    public ResponseCode execute() {
        Server srv = getServer();
        if (srv.hasCapability(Capabilities.READER) == false) {
            Log.debug("Attempting non-available capability: READER");
        }
        String messageId = getArgument("messageId");
        String command = "ARTICLE";
        if (messageId != null) command += " " + messageId;
        srv.send(command);
        return srv.getResponse();
    }
}

Ответы на вопрос(2)

Ваш ответ на вопрос