2016-04-05 24 views
0

私はいくつかのファイルを処理する必要がありますxsdxsdファイルからJAXBクラスを生成します。私は、次の結果が得られます。UnmarshalException:インスタンスを作成することができません

@XmlAccessorType(XmlAccessType.FIELD) 
@XmlRootElement(name = "xmeldit.datenlieferung.1100") 
public class XmelditDatenlieferung1100 extends TypeNachrichtG2G 

@XmlAccessorType(XmlAccessType.FIELD) 
@XmlType(name = "type.Nachrichtenkopf.G2G") 
class TypeNachrichtG2G extends NachrichtG2G { 
} 

@XmlSeeAlso({NachrichtG2GRueckweisung.class,TypeNachrichtG2G.class}) 
abstract class NachrichtG2G { 
    @XmlElement(required = true) 
    protected NachrichtenkopfG2G nachrichtenkopf; 
} 

@XmlAccessorType(XmlAccessType.FIELD) 
@XmlType(name = "Nachrichtenkopf.G2G", propOrder = {"identifikationNachricht", "leser", "autor"}) 
@XmlSeeAlso({ TypeNachrichtenkopfG2G.class, NachrichtenkopfG2GXInneres.class 
}) 
public abstract class NachrichtenkopfG2G { 
} 

@XmlAccessorType(XmlAccessType.FIELD) 
@XmlType(name = "type.Nachrichtenkopf.G2G") 
public class TypeNachrichtenkopfG2G extends NachrichtenkopfG2G{ 
} 

@XmlAccessorType(XmlAccessType.FIELD) 
@XmlType(name = "Nachrichtenkopf.G2G.XInneres") 
public class NachrichtenkopfG2GXInneres extends NachrichtenkopfG2G { 
} 

は、今私は、クラスXmelditDatenlieferung1100オブジェクトをunmarshalたい。しかし、私はUnmarshalExceptionを取得します。 JaxbNachrichtenkopfG2Gのインスタンスを作成します。 NachrichtenkopfG2Gは要約です。 どうすればいいですかjaxbNachrichtenkopfG2Gの代わりにTypeNachrichtenkopfG2Gを使用しますか?

私はオブジェクトを非整列化:私は見当がつかない

JAXBContext jaxbContext = JAXBContext.newInstance("packagename"); 
XmelditDatenlieferung1100 unmarshal = XmelditDatenlieferung1100) jaxbContext.createUnmarshaller().unmarshal(filePath.toFile()); 

。 :-(

+1

アンマーシャリングを開始するコードは何ですか? – f1sh

+0

コードを追加して、アンマーシャリングを開始する方法 –

答えて

0

私は、これは単にxinneres-basisnachricht.xsdabstract属性を除去することにより、固定することができ、正確に同じ問題に遭遇した

だから、この変更:。。に

<xs:complexType name="Nachrichtenkopf.G2G" abstract="true"> 

を:

<xs:complexType name="Nachrichtenkopf.G2G"> 
+0

はい、それは解決策でした帽子私は使用しますが、これは問題を解決するための一般的な方法ですか?私はそうは思わない。 –

関連する問題