Генерация класса 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

Есть идеи?

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

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