JAXB para iniciantes: Tutorial para processamento XML com Java
Para que os aplicativos se comuniquem, geralmente é necessário converter os dados em um formato altamente compatível. Para esse propósito, a biblioteca JAXB existe em Java, que processa objetos em arquivos XML.
Gere um arquivo XML com JAXB - Best Practices
JAXB significa Java Architecture for XML Binding . Ele permite que objetos Java sejam convertidos em arquivos XML e vice-versa. Antes de começar, há alguns pontos a serem lembrados:
- O JAXB é parte integrante do conjunto JRE desde a versão 1.6 . Além disso, o ambiente de desenvolvimento Java deve estar atualizado porque corrigiu bugs.
- Evite tipos de dados primitivos, como número inteiro flutuante, decimal ou negativo, bem como tipos de dados anônimos . Não há equivalente no JAXB para isso. Caso contrário, objetos, tipos de dados numéricos, listas e conjuntos podem ser convertidos. O JAXB também não pode manipular tipos de dados complexos, como java.time.LocalDate . Isso requer um adaptador especialmente criado.
- No jargão técnico, a direção de Java para XML é chamada empacotamento, enquanto desempacotar representa a direção oposta.
anotações XML
Últimos vídeos
JAXB para iniciantes: tutorial usando o exemplo de uma coleção de CDs
AudioCD.java: Os atributos do CD de áudio são definidos aqui
MusicDB.java: A coleção de músicas consiste em uma lista de CDs de áudio
Nosso tutorial é sobre uma coleção de CDs produzida em XML. Consiste em vários CDs de áudio. O artista, o ano de lançamento, o nome do álbum e as músicas são gravados para cada CD de áudio.
- Primeiro, a classe deve ser criada, que contém os dados de um CD de áudio. Isso inclui o artista, o ano de lançamento, o álbum e as músicas que estão no CD.
- Para controlar melhor a saída no formato XML, são necessárias anotações XML que começam com @ em Java.
- O elemento raiz no arquivo XML pode ser especificado usando a seguinte anotação: @XmlRootElement (name = "Audiocd")
- Você pode inserir uma anotação acima dos métodos getter ou setter que especifica um nome alternativo para um atributo Java. Por exemplo, em vez do atributo year, o ano da publicação deve ser gerado: @XmlElement (nome = "ano da publicação")
- A ordem dos atributos é determinada pela anotação @XmlType (propOrder = {"artist", "title", "year", "songlist"}) . Isso significa que o nome do artista aparece primeiro no arquivo XML, seguido pelo nome do álbum, o ano do lançamento e a lista com as músicas. Caso contrário, a ordem depende do arquivo Java.
- Em seguida, crie uma nova classe Java chamada MusicDB, que contém uma lista de CDs de áudio. O nome da coleção de músicas e o local da coleção de músicas também são gravados aqui. Em princípio, o procedimento é semelhante ao do arquivo Java mencionado acima.
De objetos Java para arquivos XML
Últimos vídeos
AudioCDMain.java: Vários CDs de áudio são criados aqui
AudioCDMain.java: Crie a coleção de músicas
AudioCDMain.java: converte o código em XML
A conversão em si ocorre em um programa de teste, mais precisamente no método principal.
- Primeiro, crie várias instâncias de CD de áudio para que vários CDs de áudio sejam criados.
- Uma instância da coleção de músicas do tipo MusicDB também é necessária.
- Além disso, o JAXB precisa saber qual classe Java contém o elemento raiz. No nosso caso, esta é a classe MusicDB : JAXBContext context = JAXBContext.newInstance (MusicDB.class);
- A conversão ocorre usando a instância Marshaller, que está vinculada ao método JAXB mencionado acima: Marshaller m = context.createMarshaller ();
- O método Marshaller fornece outras opções, como a saída do documento XML: .setProperty (Marshaller.JAXB_FORMATTED_OUTPUT, Boolean.TRUE);
A coisa toda na direção oposta
Últimos vídeos
AudioCDMain.java: JAXB gera objetos Java a partir de um arquivo XML
O arquivo XML já foi formatado pelo JAXB
Basicamente, a conversão na outra direção ocorre de maneira semelhante:
- Primeiro, é criada uma instância do método unmarshaller : unmarshaller at = context.createUnmarshaller ();
- Em seguida, a instância do desempacotador precisa do nome do arquivo XML criado anteriormente: MusicDB mdb2 = (MusicDB) um.unmarshal (new FileReader (MUSICDB_XML));