JAXB iesācējiem: apmācība XML apstrādei ar Java
Lai lietojumprogrammas varētu sazināties savā starpā, bieži vien dati ir jāpārveido ļoti savietojamā formātā. Šim nolūkam JAXB bibliotēka pastāv zem Java, kas objektus apstrādā XML failos.
Ģenerējiet XML failu ar JAXB - labākā prakse
JAXB apzīmē Java Architecture for XML Binding . Tas ļauj Java objektus pārveidot par XML failiem un otrādi. Pirms darba sākšanas ir jāņem vērā daži punkti:
- JAXB ir neatņemama JRE komplekta sastāvdaļa kopš versijas 1.6 . Turklāt Java izstrādes videi jābūt atjauninātai, jo tajā tika novērstas kļūdas.
- Izvairieties no primitīviem datu veidiem, piemēram, mainīgajiem, decimālajiem vai negatīvajiem skaitļiem, kā arī no anonīmiem datu tipiem . JaXB tam nav ekvivalenta. Pretējā gadījumā objektus, skaitlisko datu tipus, sarakstus un kopas var pārveidot. JAXB nevar arī apstrādāt sarežģītus datu tipus, piemēram, java.time.LocalDate . Tam nepieciešams speciāli izveidots adapteris .
- Tehniskajā žargonā virzienu no Java uz XML sauc par sakārtošanu, savukārt nesatricinošs apzīmē pretēju virzienu.
XML anotācijas
Jaunākie video
JAXB iesācējiem: apmācība, izmantojot kompaktdisku kolekcijas piemēru
AudioCD.java: šeit ir definēti audio kompaktdiska atribūti
MusicDB.java: mūzikas kolekcija sastāv no audio kompaktdisku saraksta
Mūsu apmācība ir par kompaktdisku kolekciju, kas tiek izvadīta XML formātā. Tas sastāv no vairākiem audio kompaktdiskiem. Katram audio kompaktdiskam tiek ierakstīts izpildītājs, izdošanas gads, albuma nosaukums un dziesmas.
- Vispirms jāizveido klase, kurā ir audio kompaktdiska dati. Tas ietver mākslinieku, izdošanas gadu, albumu un dziesmas, kas atrodas kompaktdiskā.
- Lai labāk kontrolētu izvadi XML formātā, ir nepieciešamas XML anotācijas, kas Java sākumā sākas ar @ .
- Saknes elementu XML failā var norādīt, izmantojot šo anotāciju: @XmlRootElement (name = "Audiocd")
- Virs getter vai setter metodēm var ievietot anotāciju, kurā norādīts alternatīvs Java atribūta nosaukums. Piemēram, atribūta gada vietā jāizvada publicēšanas gads: @XmlElement (nosaukums = "publicēšanas gads")
- Atribūtu secību nosaka anotācija @XmlType (propOrder = {"izpildītājs", "nosaukums", "gads", "dziesmu saraksts"}) . Tas nozīmē, ka mākslinieka vārds vispirms parādās XML failā, kam seko albuma nosaukums, izdošanas gads un saraksts ar dziesmām. Pretējā gadījumā secība ir atkarīga no Java faila.
- Pēc tam izveidojiet jaunu Java klasi ar nosaukumu MusicDB, kurā ir audio kompaktdisku saraksts. Šeit tiek ierakstīts arī mūzikas kolekcijas nosaukums un mūzikas kolekcijas atrašanās vieta. Principā procedūra ir līdzīga tai, kas minēta iepriekšminētajā Java failā.
No Java objektiem līdz XML failiem
Jaunākie video
AudioCDMain.java: šeit ir izveidoti vairāki audio kompaktdiski
AudioCDMain.java: izveidojiet mūzikas kolekciju
AudioCDMain.java: pārveido kodu uz XML
Pārveidošana pati notiek testa programmā, precīzāk - galvenajā metodē.
- Vispirms izveidojiet vairākus audio kompaktdisku gadījumus, lai tiktu izveidoti vairāki audio kompaktdiski.
- Nepieciešams arī MusicDB tipa mūzikas kolekcijas piemērs.
- Turklāt JAXB jāzina, kura Java klase satur saknes elementu. Mūsu gadījumā šī ir MusicDB klase: JAXBContext konteksts = JAXBContext.newInstance (MusicDB.class);
- Pārveidošana notiek, izmantojot Marshaller instanci, kas ir saistīta ar iepriekš minēto JAXB metodi: Marshaller m = context.createMarshaller ();
- Maršalera metode nodrošina papildu iespējas, piemēram, ka XML dokuments tiek izvadīts formatēts: .setProperty (Marshaller.JAXB_FORMATTED_OUTPUT, Boolean.TRUE);
Visa lieta pretējā virzienā
Jaunākie video
AudioCDMain.java: JAXB ģenerē Java objektus no XML faila
JAXB jau ir formatējis XML failu
Būtībā konversija otrā virzienā notiek līdzīgi:
- Vispirms tiek izveidots unmarshaller metodes piemērs : unmarshaller at = context.createUnmarshaller ();
- Tad necilvēcīgākajam gadījumam ir nepieciešams iepriekš izveidotā XML faila nosaukums: MusicDB mdb2 = (MusicDB) um.unmarshal (jauns FileReader (MUSICDB_XML));