JAXB per principianti: Tutorial per l'elaborazione XML con Java
Affinché le applicazioni possano comunicare tra loro, è spesso necessario convertire i dati in un formato altamente compatibile. A tale scopo, la libreria JAXB esiste in Java, che elabora gli oggetti in file XML.
Genera un file XML con JAXB - Best Practices
JAXB sta per Java Architecture for XML Binding . Consente agli oggetti Java di essere convertiti in file XML e viceversa. Prima di iniziare, ci sono alcuni punti da tenere a mente:
- JAXB è parte integrante della suite JRE dalla versione 1.6 . Inoltre, l'ambiente di sviluppo Java dovrebbe essere aggiornato perché ha corretto i bug.
- Evitare tipi di dati primitivi come float, numeri interi decimali o negativi nonché tipi di dati anonimi . Non esiste un equivalente in JAXB per questo. In caso contrario, è possibile convertire oggetti, tipi di dati numerici, elenchi e set. Inoltre, JAXB non è in grado di gestire tipi di dati complessi come java.time.LocalDate . Ciò richiede un adattatore appositamente creato.
- Nel gergo tecnico, la direzione da Java a XML si chiama marshaling, mentre il non -marling rappresenta la direzione opposta.
annotazioni XML
Ultimi video
JAXB per principianti: tutorial che utilizza l'esempio di una raccolta di CD
AudioCD.java: qui vengono definiti gli attributi del CD audio
MusicDB.java: la raccolta musicale è composta da un elenco di CD audio
Il nostro tutorial riguarda una raccolta di CD che viene emessa in XML. È composto da diversi CD audio. L'artista, l'anno di uscita, il nome dell'album e le canzoni sono registrati per ogni CD audio.
- Innanzitutto, è necessario creare la classe, che contiene i dati di un CD audio. Ciò include l'artista, l'anno di uscita, l'album e le canzoni presenti nel CD.
- Per controllare meglio l'output in formato XML, sono necessarie annotazioni XML che iniziano con @ in Java.
- L'elemento radice nel file XML può essere specificato utilizzando la seguente annotazione: @XmlRootElement (name = "Audiocd")
- È possibile inserire un'annotazione sopra i metodi getter o setter che specifica un nome alternativo per un attributo Java. Ad esempio, anziché l'anno dell'attributo, dovrebbe essere generato l'anno di pubblicazione: @XmlElement (name = "year of publishing")
- L'ordine degli attributi è determinato dall'annotazione @XmlType (propOrder = {"artista", "titolo", "anno", "elenco brani"}) . Ciò significa che il nome dell'artista viene visualizzato per primo nel file XML, seguito dal nome dell'album, dall'anno di uscita e dall'elenco con le canzoni. Altrimenti l'ordine dipende dal file Java.
- Successivamente, crea una nuova classe Java denominata MusicDB, che contiene un elenco di CD audio. Qui vengono registrati anche il nome della raccolta musicale e la posizione della raccolta musicale. In linea di principio, la procedura è simile a quella del file Java sopra menzionato.
Dagli oggetti Java ai file XML
Ultimi video
AudioCDMain.java: qui vengono creati diversi CD audio
AudioCDMain.java: crea la raccolta musicale
AudioCDMain.java: converte il codice in XML
La conversione stessa avviene in un programma di test, più precisamente nel metodo principale.
- Innanzitutto, creare più istanze di CD audio in modo da creare più CD audio.
- È inoltre richiesta un'istanza della raccolta musicale di tipo MusicDB.
- Inoltre, JAXB deve sapere quale classe Java contiene l'elemento root. Nel nostro caso questa è la classe MusicDB : JAXBContext context = JAXBContext.newInstance (MusicDB.class);
- La conversione avviene utilizzando l'istanza Marshaller, collegata al metodo JAXB sopra menzionato: Marshaller m = context.createMarshaller ();
- Il metodo Marshaller fornisce ulteriori opzioni, ad esempio che il documento XML sia formattato in output: .setProperty (Marshaller.JAXB_FORMATTED_OUTPUT, Boolean.TRUE);
Il tutto nella direzione opposta
Ultimi video
AudioCDMain.java: JAXB genera oggetti Java da un file XML
Il file XML è già stato formattato da JAXB
Fondamentalmente, la conversione nell'altra direzione procede in modo simile:
- Innanzitutto, viene creata un'istanza del metodo unmarshaller : unmarshaller at = context.createUnmarshaller ();
- Quindi l'istanza unmarshaler richiede il nome del file XML creato in precedenza: MusicDB mdb2 = (MusicDB) um.unmarshal (nuovo FileReader (MUSICDB_XML));