JAXB pro začátečníky: Výukový program pro zpracování XML s Java
Aby aplikace vzájemně komunikovaly, je často nutné převést data do formátu, který je vysoce kompatibilní. Za tímto účelem existuje v Javě knihovna JAXB, která zpracovává objekty do souborů XML.
Vygenerujte soubor XML pomocí JAXB - Best Practices
JAXB znamená Java Architecture for XML Binding . Umožňuje převádět objekty Java na soubory XML a naopak. Než začnete, je třeba mít na paměti několik bodů:
- JAXB je nedílnou součástí sady JRE od verze 1.6 . Kromě toho by vývojové prostředí Java mělo být aktuální, protože opravovalo chyby.
- Vyhněte se primitivním typům dat, jako je float, decimální nebo záporné celé číslo, stejně jako anonymní datové typy . V JAXB neexistuje ekvivalent. Jinak lze převádět objekty, typy číselných dat, seznamy a sady. JAXB také nedokáže zpracovat složité datové typy, jako je java.time.LocalDate . To vyžaduje speciálně vytvořený adaptér .
- V technickém žargonu se směr z Java do XML nazývá marshaling, zatímco unmarshaling znamená opačný směr.
XML anotace
Nejnovější videa
JAXB pro začátečníky: tutoriál na příkladu sbírky CD
AudioCD.java: Zde jsou definovány atributy zvukového CD
MusicDB.java: Hudební kolekce se skládá ze seznamu zvukových CD
Náš tutoriál je o sbírce CD, která je na výstupu v XML. Skládá se z několika zvukových CD. Interpret, rok vydání, název alba a skladby jsou zaznamenány pro každé zvukové CD.
- Nejprve by měla být vytvořena třída, která obsahuje data zvukového CD. To zahrnuje interpreta, rok vydání, album a skladby, které jsou na CD.
- Pro lepší kontrolu výstupu ve formátu XML jsou vyžadovány anotace XML, které začínají @ v Java.
- Kořenový prvek v souboru XML lze určit pomocí následující anotace: @XmlRootElement (name = "Audiocd")
- Nad metody getter nebo setter můžete vložit anotaci, která určuje alternativní název atributu Java. Například namísto atributového roku by měl být vydán rok vydání: @XmlElement (jméno = "rok vydání")
- Pořadí atributů je určeno anotací @XmlType (propOrder = {"artist", "title", "year", "songlist"}) . To znamená, že jméno umělce se nejprve objeví v souboru XML, následuje název alba, rok vydání a seznam s písněmi. Jinak závisí pořadí na souboru Java.
- Dále vytvořte novou třídu Java nazvanou MusicDB, která obsahuje seznam zvukových CD. Zde se také zaznamenává název hudební sbírky a umístění hudební sbírky. Postup je v zásadě podobný postupu popsanému výše v souboru Java.
Od objektů Java k souborům XML
Nejnovější videa
AudioCDMain.java: Zde je vytvořeno několik zvukových CD
AudioCDMain.java: Vytvořte hudební sbírku
AudioCDMain.java: Převede kód na XML
Samotná konverze probíhá v testovacím programu, přesněji v hlavní metodě.
- Nejprve vytvořte více instancí zvukových CD, abyste vytvořili více zvukových CD.
- Vyžaduje se také instance hudební sbírky typu MusicDB.
- Kromě toho musí JAXB vědět, která třída Java obsahuje kořenový prvek. V našem případě se jedná o třídu MusicDB : JAXBContext context = JAXBContext.newInstance (MusicDB.class);
- Konverze probíhá pomocí instance Marshaller, která je spojena s výše uvedenou metodou JAXB: Marshaller m = context.createMarshaller ();
- Metoda Marshaller poskytuje další možnosti, jako například to, že je dokument XML formátován na výstup: .setProperty (Marshaller.JAXB_FORMATTED_OUTPUT, Boolean.TRUE);
Celá věc opačným směrem
Nejnovější videa
AudioCDMain.java: JAXB generuje objekty Java ze souboru XML
Soubor XML již byl naformátován pomocí JAXB
Převod v jiném směru probíhá v zásadě podobným způsobem:
- Nejprve se vytvoří instance metody unmarshaller : unmarshaller na = context.createUnmarshaller ();
- Pak instance unmarshaler potřebuje název dříve vytvořeného souboru XML: MusicDB mdb2 = (MusicDB) um.unmarshal (nový FileReader (MUSICDB_XML));