"Oke, banjur. Kaya sing wis sampeyan duga, iku dudu kabeh."

"Saiki aku bakal ngandhani sawetara aspek JAXB liyane. Nanging kaya sing ditindakake JSON, kita bakal miwiti koleksi."

"Nalika deserializing koleksi nggunakake JAXB, ana uga kahanan sing durung mesthi babagan koleksi tartamtu (ArrayList, LinkedList, Vector, etc.) digunakake kanggo variabel List. Lan maneh jawaban kanggo pitakonan iki diwenehake dening anotasi.

"Kabeh cukup prasaja. Yen jinis koleksi ora ditemtokake ing anotasi, banjur JAXB bakal nyoba milih koleksi sing paling cocok nggunakake jinise. Kanggo Dhaptar, iki bakal dadi ArrayList; kanggo Peta, bakal dadi HashMap, lsp. ."

"Ing kasunyatan, ana masalah sing luwih sithik tinimbang JSON, amarga saben kelas duwe tag unik, lan sampeyan bisa nggunakake tag kasebut kanggo nemtokake kelas sing tepat."

"Contone, yen sampeyan kudu deserialize klompok unsur sing marisi leluhur umum, sampeyan nggunakake  @XmlAny: anotasi"

Ngonversi obyek saka XML
public static void main(String[] args) throws JAXBException
{
 String xmldata = "<zoo><cat/><cat/><dog/><cat/></zoo>";
 StringReader reader = new StringReader(xmldata);

 JAXBContext context = JAXBContext.newInstance(Cat.class, Zoo.class, Dog.class);
 Unmarshaller unmarshaller = context.createUnmarshaller();

 Cat cat = (Cat) unmarshaller.unmarshal(reader);
}
A kelas kang obyek deserialized saka XML
@XmlType(name = "zoo") 
@XmlRootElement 
class  Zoo 
{ 
@XmlAny public  List<Object> kewan; } 
 


@XmlType(name = "cat") 
@XmlRootElement 
class  Cat 
{ 
public  String name; umur int umum  ;  bobot int umum ; 
 
 

 Kucing() 
 { 
 } 
}

@XmlType(jeneng = "asu") 
@XmlRootElement 
kelas  Dog 
{ 
public  String name; umur int umum  ;  bobot int umum ; 
 
 

 Kucing() 
 { 
 } 

"Yen koleksi ditandhani karo @XmlAny anotasi, banjur sembarang obyek cocok bisa dilebokake ing. Lan JAXB Unmarshaller mbayar manungsa waé kanggo tags nalika populating koleksi."

"Ing kasus iki, urutan tag " <zoo> <cat/><cat/> <dog/> <cat/> </zoo> " bakal diowahi dadi koleksi karo obyek Cat, Cat, Dog, lan Cat. ."

"Iku babagan sing dakkarepake."

"Uh-huh. Oh, omong-omong, siji maneh. Yen sampeyan deserialize campuran teks lan tag, sampeyan kudu nggunakake anotasi @XmlMixed ."

"Iki conto jinis XML iki:"

Sample XML sing mbutuhake anotasi @XmlMixed
<data> 
<item> 
tes 1 <item/> teks 2 <item> nama </item> teks 3 </item> </data> 

 

 

 

"Wah. Aku wis lali yen XML kuwi ana. Aku wis digunakake kanggo kabeh sing cantik, karo tags ditempelake, lan kabeh liyane."

"Iki pancen ana. Lan JAXB duwe anotasi kanggo kasus iki!"

"Apik. Ngomong-ngomong, aku arep takon: kepiye enums serialisasi?"

"Pitakonan apik! Apik nyekel! Aku piye wae skip topik sing."

"Ana anotasi @XmlEnum khusus sing kudu digunakake kanggo menehi tandha enum. Sampeyan bisa nggunakake aplikasi kasebut kanggo nemtokake manawa nilai kasebut bakal disimpen minangka nomer utawa senar."

"Ana uga anotasi @XmlEnumValue sing ngidini sampeyan nemtokake nilai sing cocog karo lapangan enum tartamtu."

"Iki sawetara conto:"

Angka strings
@XmlType
@XmlEnum(Integer.class)
public enum Code
{
 @XmlEnumValue("1")
  START,

 @XmlEnumValue("2")
  INPROGRESS,

 @XmlEnumValue("3")
  FINISH

 @XmlEnumValue("-1")
  ERROR
}
@XmlType
@XmlEnum(String.class)
public enum Card
{
 @XmlEnumValue("Spade")
  CLUBS,

 @XmlEnumValue("Diamond")
  DIAMONDS,

 @XmlEnumValue("Heart")
  HEARTS,

 @XmlEnumValue("Club")
  SPADES
}

"Moly Suci. Aku ora bisa mbayangno ngendi aku bakal perlu iki, nanging aku iku banget migunani. Lan sing paling Jahwéh, aku ora kudu kelet kanggo senar standar utawa angka numerik."

"Yep. Iki praktis, contone, nalika sampeyan nulis program sing ngganti pesen karo, ngomong, server Facebook, lan padha duwe set nilai sing diutus. Sampeyan mung kudu nemtokake menyang enum dhewe lan kabeh bakal bisa. "

"Sing apik banget. Aku mesthi seneng JAXB."

"Apik. Banjur dina iki. Ngaso lan ngaso."