使用DTD文件中的JAXB生成Java类 – 如何修改DTD?

我想使用JAXB从dtd文件生成Java类。

dtd看起来像这样:

               

使用JAXB生成类时,我得到以下内容:

  • 的ObjectFactory
  • 内容

在Content类中,检索所有人和组的方法是

 public List getPersonOrGroup() { if (personOrGroup == null) { personOrGroup = new ArrayList(); } return this.personOrGroup; } 

我可以在dtd文件中更改任何Content ,因此Java类的生成将使personsgroupsContent java类中分离,因此要检索所有人员和组将调用Content.getPersons()Content.getGroups()分别?

在他的回答中,mavrav似乎告诉DTD这是不可能的。 我不太清楚如何使用DTD。 但是,如果可以,请在XML模式中翻译您的DTD。

我试着用这个谢玛:

                                                       

在使用以下cmd生成Java类之后:

 xjc -p com.mypackage schema.xsd 

它为我提供了以下Content类的代码:

 @XmlRootElement(name = "content") public class Content { @XmlElement(required = true) protected List person; @XmlElement(required = true) protected List group; public List getPerson() { if (person == null) { person = new ArrayList(); } return this.person; } public List getGroup() { if (group == null) { group = new ArrayList(); } return this.group; } } 
 xjc -dtd -d generatedsrc -p com.examples log4j.dtd 

将生成目录generatedsrc中的类,使用的包将是com.examples。

您可以在此处找到更多信息: http : //www.javaworld.com/community/node/7622