2017-04-10 59 views
0

我正在使用JAXB調查對象marshalingunMarshaling。同時注意到有兩個選項可以獲得JAXBContext的實例。Jaxb使用jaxb.in​​dex文件時

  • 一個基於類:JAXBContext context = JAXBContext.newInstance(ex.getClass());
  • 另一種是基於包的名字:JAXBContext context = JAXBContext.newInstance(ex.getClass().getPackage().getName());

對於第二種方式,你必須提供jaxb.index文件,包含了bean類名的列表。

也許有人可以解釋一下,這兩種獲得JAXBContext實例的方法有什麼區別?哪個更好用,什麼時候用?

+0

可能重複的[JAXBContext.newInstance變化](http://stackoverflow.com/questions/16860759/jaxbcontext-newinstance-variations) – ulab

回答

1

對於第二種方法,您必須提供jaxb.index文件,其中包含bean類名稱列表。

這是不正確的。在JAXB2中,此工作不需要jaxb.index,這些類通過ObjectFactory@XmlSeeAlso「識別」。

通常的做法是使用JAXBContext context = JAXBContext.newInstance("my.package:my.another.package);,因爲您通常會考慮所有相關的類並且不想明確枚舉它們。

+0

但仍然,'jaxb.in​​dex'的目的是什麼,當創建它? – Bublik

+0

@Bublik你可以創建它而不是ObjectFactory。如果您手動編寫JAXB類(與從模式生成JAXB類相比),這可能會更方便。 – lexicore

相關問題