JAXB kezdőknek: Oktatóanyag az XML-feldolgozáshoz Java-val
Annak érdekében, hogy az alkalmazások kommunikálhassanak egymással, gyakran szükséges az adatokat nagyon kompatibilis formátumra konvertálni. Ebből a célból a JAXB könyvtár létezik a Java alatt, amely feldolgozza az objektumokat XML fájlokká.
Generáljon XML fájlt a JAXB segítségével - Legjobb gyakorlatok
A JAXB a Java Architecture for XML Binding kifejezést jelenti . Ez lehetővé teszi a Java objektumok konvertálását XML fájlokba és fordítva. Mielőtt elkezdené, van néhány szempont, amelyet figyelembe kell venni:
- A JAXB a JRE csomag szerves részét képezi az 1.6 verzió óta. Ezenkívül a Java fejlesztői környezetnek is naprakésznek kell lennie, mivel javította a hibákat.
- Kerülje az olyan primitív adattípusokat, mint például úszó, tizedes vagy negatív egész szám, valamint az anonim adattípusok . A JAXB-ben ennek nincs megfelelője. Ellenkező esetben az objektumok, numerikus adattípusok, listák és halmazok konvertálhatók. A JAXB nem képes kezelni olyan összetett adattípusokat, mint a java.time.LocalDate . Ehhez speciálisan létrehozott adapter szükséges .
- A műszaki zsargonban a Java-tól az XML-ig terjedő irányt rendeződésnek nevezzük, míg az unmarshaling az ellenkező irányt jelöli .
XML jelölések
Legújabb videók
JAXB kezdőknek: bemutató CD-gyűjtemény példájának felhasználásával
AudioCD.java: Az audio CD attribútumai itt vannak meghatározva
MusicDB.java: A zenegyűjtemény audio CD-k listájából áll
Az oktatóanyag egy CD-gyűjteményről szól, amely XML formátumban jelenik meg. Több audio CD-ből áll. Az előadó, a kiadás éve, az album neve és a dalok rögzítve vannak minden audio CD-n.
- Először létre kell hozni az osztályt, amely egy audio CD adatait tartalmazza. Ide tartoznak az előadó, a kiadás éve, az album és a CD-n található dalok.
- Az XML formátumú kimenet jobb vezérléséhez a Java alatt a @ betűvel kezdődő XML kommentárok szükségesek.
- Az XML fájl gyökér elemét a következő kommentár segítségével lehet megadni: @XmlRootElement (name = "Audiocd")
- A getter vagy a setter metódusok fölé egy kommentárt illeszthet be, amely megadja a Java attribútum alternatív nevét. Például az attribútumév helyett a kiadás évét kell kiadni: @XmlElement (név = "megjelenés éve")
- Az attribútumok sorrendjét a @XmlType kommentár határozza meg (propOrder = {"előadó", "cím", "év", "dallista"}) . Ez azt jelenti, hogy az előadó neve először megjelenik az XML fájlban, majd az album neve, a kiadás éve és a dalok listája. Egyébként a sorrend a Java fájltól függ.
- Ezután hozzon létre egy új Java osztályt, amelynek neve MusicDB, amely audio CD-k listáját tartalmazza. Itt is rögzítik a zenegyűjtemény nevét és a zenegyűjtemény helyét. Alapvetően az eljárás hasonló a fent említett Java fájlhoz.
A Java objektumoktól az XML fájlokig
Legújabb videók
AudioCDMain.java: Itt létrehoznak több audio CD-t
AudioCDMain.java: Hozza létre a zenegyűjteményt
AudioCDMain.java: A kódot konvertálja XML-re
Maga az átalakítás egy tesztprogramban zajlik, pontosabban a fő módszerben.
- Először hozzon létre több Audio CD-példányt, hogy több Audio CD-t hozzon létre.
- Szükség van a MusicDB típusú zenegyűjtemény példányára is.
- Ezenkívül a JAXB-nek tudnia kell, melyik Java osztály tartalmazza a gyökér elemet. Esetünkben ez a MusicDB osztály: JAXBContext context = JAXBContext.newInstance (MusicDB.class);
- A konvertálás a Marshaller-példány segítségével történik, amelyet a fent említett JAXB-módszerrel kapcsolunk össze: Marshaller m = context.createMarshaller ();
- A Marshaller módszer további lehetőségeket kínál, például az XML dokumentum kimenetének formázását: .setProperty (Marshaller.JAXB_FORMATTED_OUTPUT, Boolean.TRUE);
Az egész ellenkező irányba
Legújabb videók
AudioCDMain.java: A JAXB Java objektumokat generál egy XML fájlból
Az XML fájlt a JAXB már formázta
Alapvetően a másik irányba történő átalakítás hasonló módon zajlik:
- Először létrejön a unmarshaller módszer példánya: unmarshaller at = context.createUnmarshaller ();
- Akkor az unmarshaler példánynak szüksége van a korábban létrehozott XML fájl nevére : MusicDB mdb2 = (MusicDB) um.unmarshal (új FileReader (MUSICDB_XML));