JAXB aloittelijoille: Opetusohjelma XML-prosessointiin Java-ohjelmalla
Jotta sovellukset voivat kommunikoida keskenään, on usein tarpeen muuntaa tiedot erittäin yhteensopivaan muotoon. Tätä tarkoitusta varten Java-järjestelmässä on JAXB-kirjasto, joka käsittelee objektit XML-tiedostoiksi.
Luo XML-tiedosto JAXB: llä - parhaat käytännöt
JAXB tarkoittaa Java-arkkitehtuuria XML-sidontaan . Se mahdollistaa Java-objektien muuntamisen XML-tiedostoiksi ja päinvastoin. Ennen aloittamista on muistettava muutama seikka:
- JAXB on ollut olennainen osa JRE-sarjaa versiosta 1.6 lähtien . Lisäksi Java-kehitysympäristön tulisi olla ajan tasalla, koska se korjaa virheet.
- Vältä primitiivisiä tietotyyppejä, kuten kelluva, desimaaliluku tai negatiivinen kokonaisluku sekä nimettömiä tietotyyppejä . JAXB: llä ei ole vastaavaa tälle. Muutoin objektit, numeeriset tietotyypit, luettelot ja joukot voidaan muuntaa. JAXB ei myöskään pysty käsittelemään monimutkaisia tietotyyppejä, kuten java.time.LocalDate . Tämä vaatii erityisesti luodun sovittimen .
- Teknisessä žargonissa suuntaa Java: sta XML: ään kutsutaan marshalingiksi, kun taas muodoton muoto tarkoittaa vastakkaista suuntaa.
XML merkinnät
Uusimmat videot
JAXB aloittelijoille: opetusohjelma CD-kokoelman esimerkillä
AudioCD.java: Tässä määritetään audio-CD-levyn määritteet
MusicDB.java: Musiikkikokoelma koostuu luettelosta audio-CD-levyistä
Opetusohjelmamme käsittelee CD-kokoelmaa, joka tulostetaan XML-muodossa. Se koostuu useista audio-CD-levyistä. Artisti, julkaisuvuosi, albumin nimi ja kappaleet tallennetaan jokaiselle audio-CD-levylle.
- Ensin tulisi luoda luokka, joka sisältää ääni-CD: n tiedot. Tähän sisältyvät esittäjä, julkaisuvuosi, albumi ja CD-levyllä olevat kappaleet.
- Jotta tulostusta voitaisiin hallita paremmin XML-muodossa, tarvitaan XML-merkinnät, jotka alkavat merkillä @ Java-alla.
- XML-tiedoston pääelementti voidaan määrittää seuraavalla merkinnällä: @XmlRootElement (nimi = "Audiocd")
- Voit lisätä huomautuksen getter- tai setter-menetelmien yläpuolelle, joka määrittää Java-määritteelle vaihtoehtoisen nimen. Esimerkiksi attribuutin vuoden sijasta tulisi tulostaa julkaisuvuosi: @XmlElement (nimi = "julkaisuvuosi")
- Määritteiden järjestys määritetään merkinnällä @XmlType (propOrder = {"artisti", "otsikko", "vuosi", "kappaleluettelo"}) . Tämä tarkoittaa, että esittäjän nimi esiintyy ensin XML-tiedostossa, jota seuraa albumin nimi, julkaisuvuosi ja luettelo kappaleista. Muutoin järjestys riippuu Java-tiedostosta.
- Luo seuraavaksi uusi Java-luokka nimeltä MusicDB, joka sisältää luettelon ääni-CD-levyistä. Täälle tallennetaan myös musiikkikokoelman nimi ja kokoelman sijainti. Periaatteessa menettely on samanlainen kuin yllä mainitussa Java-tiedostossa.
Java-objekteista XML-tiedostoihin
Uusimmat videot
AudioCDMain.java: Täälle luodaan useita audio-CD-levyjä
AudioCDMain.java: Luo musiikkikokoelma
AudioCDMain.java: Muuntaa koodin XML-muotoon
Itse muuntaminen tapahtuu testiohjelmassa, tarkemmin päämenetelmässä.
- Luo ensin useita audio-CD-esiintymiä siten, että useita audio-CD-levyjä luodaan.
- Vaaditaan myös esiintymä MusicDB-tyyppisestä musiikkikokoelmasta.
- Lisäksi JAXB: n on tiedettävä, mikä Java-luokka sisältää pääelementin. Meidän tapauksessamme tämä on MusicDB-luokka: JAXBContext konteksti = JAXBContext.newInstance (MusicDB.class);
- Muuntaminen tapahtuu käyttämällä Marshaller-ilmentymää, joka on kytketty yllä mainittuun JAXB-menetelmään: Marshaller m = context.createMarshaller ();
- Marshaller-menetelmä tarjoaa lisävaihtoehtoja, kuten esimerkiksi, että XML-dokumentti tulostetaan muotoiltuina: .setProperty (Marshaller.JAXB_FORMATTED_OUTPUT, Boolean.TRUE);
Koko asia vastakkaiseen suuntaan
Uusimmat videot
AudioCDMain.java: JAXB luo Java-objekteja XML-tiedostosta
JAXB on jo muotoillut XML-tiedoston
Periaatteessa muunto toiseen suuntaan etenee samalla tavalla:
- Ensin luodaan esimerkki unmarshaller-menetelmästä: unmarshaller at = context.createUnmarshaller ();
- Sitten unmarshaler-ilmentymä tarvitsee aiemmin luodun XML-tiedoston nimen: MusicDB mdb2 = (MusicDB) um.unmarshal (uusi FileReader (MUSICDB_XML));