2016-06-01 29 views
0

我开始学习JAXB,所以这个问题可能很愚蠢。现在我有两个类,一个基本的“base.java”和一个派生类“child.java”。这些类是使用“.xsd”文件生成的。我有另一个类“secondBase.java”,这个类不是由我的“.xsd”生成的。我的问题是: 是否有可能使用“secondBase.java”作为“child.java”的基础而不是由我的Jaxb创建的基础?是否有可能将现有的类作为.xsd文件的基础jaxb

这是我的.xsd文件:

<?xml version="1.0" encoding="UTF-8"?> 
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" 
    xmlns:jxb="http://java.sun.com/xml/ns/jaxb" jxb:version="2.1"> 

    <xs:complexType name="base"> 
     <xs:sequence> 
      <xs:element name="id" type="xs:string" minOccurs="1" 
       maxOccurs="1" /> 
     </xs:sequence> 
    </xs:complexType> 
    <xs:element name="chlid" /> 
    <xs:complexType name="chlid"> 
     <xs:complexContent> 
      <xs:extension base="base"> 
      </xs:extension> 
     </xs:complexContent> 
    </xs:complexType> 
</xs:schema> 

我secondBase.java:

public class secondBase { 
    public secondBase(){ 
    id="0"; 
    } 
    protected String id; 
    public String getId() { 
     return id; 
    } 
    public void setId(String value) { 
     this.id = value; 
    } 
} 

我base.java(使用.xsd文件生成的)

@XmlAccessorType(XmlAccessType.FIELD) 
@XmlType(name = "base", propOrder = { 
    "id" 
}) 
@XmlSeeAlso({ 
    Chlid.class 
}) 
public class Base { 

    @XmlElement(required = true) 
    protected String id; 
    public String getId() { 
     return id; 
    } 
    public void setId(String value) { 
     this.id = value; 
    } 

} 

我的孩子。 java(使用.xsd文件生成)

@XmlAccessorType(XmlAccessType.FIELD) 
@XmlType(name = "chlid") 
public class Chlid 
    extends Base 
{ 


} 

感谢的提前:)

+0

你可以分享你的基础和儿童课吗? –

回答

0

这里的解决方案,它可能是有帮助的人。我已将此添加到我的.xsd文件:

<xs:complexType name="secondBase"> 
    <xs:annotation> 
     <xs:appinfo> 
     <jaxb:class name="secondBase" implClass="com.myjaxb.classes.secondBase"/> 
     </xs:appinfo> 
    </xs:annotation> 
    </xs:complexType> 

,我用这个“复杂类型作为一种推广以我的元素:) 聚苯乙烯:这个答案是从这个主题的启发:how to force schema compiled classes to extend specific class outside schema

相关问题