Генерация класса JAXB, который реализует интерфейс
В настоящее время я использую JAXB для генерации Java-классов, чтобы разобрать XML. Теперь я хотел бы создать новую схему, очень похожую на первую, и сгенерированные классы реализуют один и тот же интерфейс.
Например, у меня есть два файла схемы, которые определяют XML с похожими тегами:
adult.xsd
kid.xsd
Используя JAXB и XJC I 'Я хотел бы создать два файла классов:
public class Adult implements Person {
...
public String getName() { ... }
public int getAge() { ... }
public String getJob { ... }
}
public class Kid implements Person {
...
public String getName() { ... }
public int getAge() { ... }
public String getSchool { ... }
}
где интерфейс Person определяетgetName()
а такжеgetAge()
methods.I»
мы смотрели на некоторые издокументация для отображения интерфейсов, но это, по-видимому, только для ситуации, когда у вас уже есть Java-классы, которые вы хотите отобразить в DOM.
Также я'мы пытались использовать этовнешний плагин но это неПохоже на работу. Вот мой файл связывания xjb:
mypackage.Hello
но это дает следующую ошибку:
$ java -cp "lib/activation.jar;lib/InterfacesXJCPlugin.jar;lib/jaxb1-impl.jar;lib/jaxb-api.jar;lib/jaxb-xjc.jar;lib/jsr173_1.0_api.jar" com.sun.tools.xjc.XJCFacade -p mypackage.myxml -extension -Xinterfaces xsd/adult.xsd -b binding.xjb
parsing a schema...
[ERROR] XPath evaluation of "xs:schema/xs:complexType[@name='Person']" results in empty target node
line 8 of file:/C:/dev/jaxb/jaxb-ri/binding.xjb
Failed to parse a schema.
Можно ли создать класс с JAXB, который реализует интерфейс?
UpdateI»
мы пытались использоватьВставка интерфейса плагин, но по какой-то причине можетзаставить его работать. Вот как яЯ вызываю xjc, но это похоже на то, что плагин не извлекается из classpath:
$ java -cp "lib/xjc-if-ins.jar;lib/jaxb-xjc.jar" com.sun.tools.xjc.XJCFacade -p mypackage -extension -Xifins myschema.xsd -b binding.xjb
Я получаю ошибку:
unrecognized parameter -Xifins
Есть идеи?